windows下批量操作VM虛擬機
需要安裝gitbash工具,然后運行下面腳本
將腳本中的路徑修改為自己的VM路徑
修改IP的操作是由此腳本生成windows的bat腳本然后再運行.
查看幫助直接運行腳本即可,不接任何參數
```
#!/bin/bash
#Author:Alaska
#Blog:null
#Time:2018-06-08 20:15:26
#Name:auto_vm.sh
#Version:V1.0
### 模版機位置
PATH_TEM="/E/VMS/Centos7/template/template.vmx"
### linux格式的虛擬機存放目錄
PATH_SERVICE="/E/VMS/Centos7"
### windwos格式的的虛擬機存放目錄
PATH_SERVICE_CMD="E:\VMS\Centos7"
### vm命令工具的路徑
PATH_VMRUN_CMD="E:\\SOFT\\VM"
### 腳本存放路徑
PATH_VMS="E:\\VMS"
### 要創建虛擬的主機名
SERVER_NAME="redis"
### 要創建虛擬的服務名稱
CLUSTER_NAME="redis-cluster"
# 創建克隆鏈接的虛擬機
VM_create(){
for i in $(cat host-list.txt)
do
echo "開始創建鏈接克隆: ${SERVER_NAME}-${i}"
/E/SOFT/VM/vmrun.exe -T ws clone "${PATH_TEM}" ${PATH_SERVICE}/${CLUSTER_NAME}/${SERVER_NAME}-${i}/${SERVER_NAME}-${i}.vmx linked -snapshot=CLEAN -cloneName=${SERVER_NAME}-${i}
sleep 2
done
}
# 啟動創建好的虛擬機
VM_start(){
for i in $(cat host-list.txt)
do
echo "開始啟動: ${SERVER_NAME}-${i}"
/E/SOFT/VM/vmrun.exe -T ws start ${PATH_SERVICE}/${CLUSTER_NAME}/${SERVER_NAME}-${i}/${SERVER_NAME}-${i}.vmx
sleep 10
done
}
# 批量修改IP地址
VM_set_IP(){
> ${PATH_VMS}\\set_ip.bat
for i in $(cat host-list.txt)
do
echo "${PATH_VMRUN_CMD}\\vmrun.exe -T ws -gu root -gp 123456 runProgramInGuest \"${PATH_SERVICE_CMD}\\${CLUSTER_NAME}\\${SERVER_NAME}-${i}\\${SERVER_NAME}-${i}.vmx\" /bin/bash /root/first.sh ${i} ${SERVER_NAME}-${i}" >> ${PATH_VMS}\\set_ip.bat
echo "ping -n 5 127.0.0.1 >nul" >> ${PATH_VMS}\\set_ip.bat
done
echo "修改IP腳本生成路徑: ${PATH_VMS}\\set_ip.bat"
echo -e "運行命令:\n1.打開cmd.exe\n2.輸入: ${PATH_VMS}\\set_ip.bat"
}
# 修改好后批量關機
VM_stop(){
for i in $(cat host-list.txt)
do
echo "開始關閉: ${SERVER_NAME}-${i}"
/E/SOFT/VM/vmrun.exe -T ws stop ${PATH_SERVICE}/${CLUSTER_NAME}/${SERVER_NAME}-${i}/${SERVER_NAME}-${i}.vmx
sleep 2
done
}
# 關機后批量創建快照
VM_snapshot(){
for i in $(cat host-list.txt)
do
echo "開始快照: ${SERVER_NAME}-${i}"
/E/SOFT/VM/vmrun.exe -T ws snapshot "${PATH_SERVICE}/${CLUSTER_NAME}/${SERVER_NAME}-${i}/${SERVER_NAME}-${i}.vmx" CLEAN
sleep 2
done
}
case $1 in
create)
VM_create
;;
start)
VM_start
;;
stop)
VM_stop
;;
shot)
VM_snapshot
;;
set_ip)
VM_set_IP
;;
*)
echo "bash $0 {create|start|set_ip|stop|shot}"
esac
```
# 更加完善的腳本,增加了快照恢復和刪除快照功能
```
$ cat auto_VM.sh
#!/bin/bash
#Author:Alaska
#Blog:null
#Time:2018-06-08 20:15:26
#Name:auto_vm.sh
#Version:V1.0
PATH_TEM="/E/VMS/Centos7/template/template.vmx"
PATH_SERVICE="/E/VMS/Centos7"
PATH_SERVICE_CMD="E:\VMS\Centos7"
######################################
#PATH_TEM="/E/VMS/Debian8/template/template.vmx"
#PATH_SERVICE="/E/VMS/Debian8"
#PATH_SERVICE_CMD="E:\\VMS\\Debian8"
######################################
#PATH_VMRUN_CMD="E:\\SOFT\\VM"
PATH_VMS="E:\\VMS"
SERVER_NAME="redis"
CLUSTER_NAME="redis-cluster"
SHOT_NAME="$2"
# 創建克隆鏈接的虛擬機
VM_create(){
for i in $(cat host-list.txt)
do
echo "開始創建鏈接克隆: ${SERVER_NAME}-${i}"
/E/SOFT/VM/vmrun.exe -T ws clone "${PATH_TEM}" ${PATH_SERVICE}/${CLUSTER_NAME}/${SERVER_NAME}-${i}/${SERVER_NAME}-${i}.vmx linked -snapshot=CLEAN -cloneName=${SERVER_NAME}-${i}
sleep 2
done
}
# 啟動創建好的虛擬機
VM_start(){
for i in $(cat host-list.txt)
do
echo "開始啟動: ${SERVER_NAME}-${i}"
/E/SOFT/VM/vmrun.exe -T ws start ${PATH_SERVICE}/${CLUSTER_NAME}/${SERVER_NAME}-${i}/${SERVER_NAME}-${i}.vmx
sleep 10
done
}
# 批量修改IP地址
VM_set_IP(){
> ${PATH_VMS}\\set_ip.bat
for i in $(cat host-list.txt)
do
echo "${PATH_VMRUN_CMD}\\vmrun.exe -T ws -gu root -gp 123456 runProgramInGuest \"${PATH_SERVICE_CMD}\\${CLUSTER_NAME}\\${SERVER_NAME}-${i}\\${SERVER_NAME}-${i}.vmx\" /bin/bash /root/first.sh ${i} ${SERVER_NAME}-${i}" >> ${PATH_VMS}\\set_ip.bat
echo "ping -n 5 127.0.0.1 >nul" >> ${PATH_VMS}\\set_ip.bat
done
echo "修改IP腳本生成路徑: ${PATH_VMS}\\set_ip.bat"
echo -e "運行命令:\n1.打開cmd.exe\n2.輸入: ${PATH_VMS}\\set_ip.bat"
}
# 修改好后批量關機
VM_stop(){
for i in $(cat host-list.txt)
do
echo "開始關閉: ${SERVER_NAME}-${i}"
/E/SOFT/VM/vmrun.exe -T ws stop ${PATH_SERVICE}/${CLUSTER_NAME}/${SERVER_NAME}-${i}/${SERVER_NAME}-${i}.vmx
sleep 2
done
}
# 關機后批量創建快照
VM_snapshot(){
for i in $(cat host-list.txt)
do
echo "開始快照: ${SERVER_NAME}-${i}"
/E/SOFT/VM/vmrun.exe -T ws snapshot "${PATH_SERVICE}/${CLUSTER_NAME}/${SERVER_NAME}-${i}/${SERVER_NAME}-${i}.vmx" ${SHOT_NAME}
sleep 2
done
}
# 獲取快照列表
VM_shot_list(){
for i in $(cat host-list.txt)
do
echo "獲取快照列表: ${SERVER_NAME}-${i}"
/E/SOFT/VM/vmrun.exe -T ws listSnapshots "${PATH_SERVICE}/${CLUSTER_NAME}/${SERVER_NAME}-${i}/${SERVER_NAME}-${i}.vmx"
sleep 2
done
}
# 批量恢復快照
VM_shot_back(){
for i in $(cat host-list.txt)
do
echo "開始恢復快照: ${SERVER_NAME}-${i} ${SHOT_NAME}"
/E/SOFT/VM/vmrun.exe -T ws revertToSnapshot "${PATH_SERVICE}/${CLUSTER_NAME}/${SERVER_NAME}-${i}/${SERVER_NAME}-${i}.vmx" ${SHOT_NAME}
sleep 2
done
}
# 批量刪除快照
VM_shot_del(){
for i in $(cat host-list.txt)
do
echo "開始刪除快照: ${SERVER_NAME}-${i} ${SHOT_NAME}"
/E/SOFT/VM/vmrun.exe -T ws deleteSnapshot "${PATH_SERVICE}/${CLUSTER_NAME}/${SERVER_NAME}-${i}/${SERVER_NAME}-${i}.vmx" ${SHOT_NAME}
sleep 2
done
}
# 獲取當前正在運行的虛擬機
VM_list(){
echo "當前正在運行的虛擬機:"
/E/SOFT/VM/vmrun.exe -T ws list
}
case $1 in
create)
VM_create
;;
start)
VM_start
;;
stop)
VM_stop
;;
shot)
VM_snapshot
;;
set_ip)
VM_set_IP
;;
shot_back)
VM_shot_back
;;
shot_del)
VM_shot_del
;;
shot_list)
VM_shot_list
;;
list)
VM_list
;;
*)
echo "bash $0 {create|start|set_ip|stop|shot|shot_list|shot_back|shot_del|list}"
esac
```
- 運維筆記
- 零: 安裝部署篇
- Zabbix
- HAproxy
- Nginx
- Apache
- Tomcat
- Mysql
- Redis
- ELK
- MongoDB
- hadoop
- GIt
- JDK
- Docker
- OpenVPN
- iRedMail
- GitLab
- ESXi
- Jenkins
- NFS
- rsync
- Python
- Keepalived
- 軟件打包篇
- 私有倉庫篇
- kafka
- zookeeper
- Spark
- Linux基礎篇
- 1.1 Linux系統介紹
- 1.3 系統優化
- 1.4 問題總結
- Linux核心命令
- 聲明
- 1-文件和目錄操作命令
- 1.3 tree: 以樹形結構顯示目錄下的內容
- 2-文件過濾及內容編輯處理命令
- find:查找目錄下的文件
- 3-文本處理三劍客
- 4-Linux信息顯示與搜索文件命令
- du:統計磁盤空間使用情況
- 5-文件備份與壓縮命令
- rsync:文件同步工具
- 6-Linux用戶管理及用戶信息查詢命令
- 7-Linux磁盤與文件系統管理命令
- 8-Linux進程管理命令
- 9-Linux網絡管理命令
- 10-Linux系統管理命令
- 11-Linux系統常用內置命令
- 服務相關
- Nginx
- 安裝部署
- 文件路徑說明
- 服務啟動管理
- 配置文件說明
- json格式日志的配置文件
- https代理
- nginx負載均衡代理websocket
- 服務優化
- 維護腳本
- 問題總結
- rewrite帶?跳轉
- nginx查看默認安裝的模塊
- HAproxy
- 2.2.1 安裝部署
- 2.2.2 文件路徑說明
- 2.2.3 服務啟動管理
- 2.2.4 配置文件說明
- ha代理websocket
- 2.2.5 集群高可用
- 2.2.6 服務優化
- 2.2.7 維護腳本
- 2.2.8 問題總結
- PHP
- 2.3.1 安裝部署
- keepalived
- 配置文件注釋
- 配置多組VIP
- Java
- 安裝部署java
- ansible部署java
- supervisor
- supervisor安裝部署測試
- iptables
- CentOS7安裝配置iptables
- pm2相關
- kafka相關
- kafka和zookeeper集群安裝部署
- nodejs
- 安裝部署nodejs
- sersync
- sersync備份圖片服務
- gitlab相關
- gitlab安裝部署
- gitlab強制修改密碼
- gitlab不同的連接方式
- jenkins相關
- 安裝部署jenkins
- python相關
- python虛擬環境
- debian安裝pyhton3.6
- Turnserver服務器搭建
- NFS相關
- 固定NFS和rsync端口
- go相關
- 安裝go
- maven相關
- debian私有倉庫搭建
- 翻墻
- linux下的百度云盤
- 私有網盤owncloud部署
- crontab定時任務
- 數據庫相關
- mongodb
- 重用操作命令
- 副本集配置文件
- 慢查詢設置
- 數據備份恢復以及數據導入導出
- 從庫允許只讀設置
- redis
- redis單節點安裝部署
- 配置文件注釋
- redis分析工具rdbtools使用
- redis數據導入導出集群工具
- redis內存信息解釋
- redis警告優化
- PHP會話session保存到redis集群
- redis啟動關閉腳本
- elk相關
- elastersearch常用命令
- elasticsearch6所需配置文件
- elasticsearch6的head插件安裝
- elk6安裝腳本
- filebeat收集php日志多行轉換
- filebeat自定義index
- elk-dockercompes配置
- docker部署elk收集runtime日志
- elasticsearch6添加新節點報錯
- elasticsearch查看索引
- docker部署es+filebeat+kibana
- mysql相關
- mysql日志
- mysql密碼過期
- mysql用戶授權訪問庫
- mysql安裝部署
- MariaDB安裝部署
- 大數據相關
- hadoop相關
- Ambari2.6離線安裝hadoop
- Ambari安裝出現的問題
- 檢測hadoop當前運行了哪些服務端口腳本
- 監控相關
- CentOS7安裝Zabbix3.4
- docker安裝zabbix
- 運維腳本
- 根據配置文件檢查服務端口運行狀態
- nginx日志分析
- ngixn日志合并腳本
- nginx查詢關鍵鏈接響應時間
- 圖片同步腳本
- 批量獲取iptables設置的端口然后驗證本機端口是否存活
- 按日期統計不同接口的響應時間
- php進程假死狀態定時清理
- 運維自動化
- deb打包命令
- ansible相關
- ansible部署
- ansible配置推送
- 編程語言
- 1-SHELL
- 2-Python
- 3-GO
- 有趣的工具
- vim
- 聲明
- 第1章: Vim解決問題的方式
- 技巧1-認識 . 命令
- 技巧2-不要自我重復
- 技巧3-以進為退
- 技巧4-執行,重復,回退
- 技巧5-查找并手動替換
- 技巧6-認識 . 范式
- 第2章: 普通模式
- 第3章: 插入模式
- 第4章: 可視模式
- 第5章: 命令行模式
- 第6章: 管理多個文件
- 第7章: 打開及保存文件
- 第8章: 用動作命令在文檔中移動
- 第9章: 在文件間跳轉
- 第10章: 復制與粘貼
- 第11章: 宏
- 第12章: 按模式匹配及按原義匹配
- 第13章: 查找
- 第14章: 替換
- 第15章: global命令
- 第16章: 通過ctags建立索引并用其瀏覽源代碼
- 第17章: 編譯代碼并通過Quickfix列表瀏覽錯誤信息
- 第18章: 通過grep,vimgrep以及其他工具對整個工程進行查找
- 第19章: 自動補全
- 第20章: 利用Vim的拼寫檢查器查找并更正拼寫錯誤
- 第21章: 接下來干什么
- 附錄A 根據個人喜好定制Vim
- 終端命令記錄回放工具
- screen使用
- iftop查看網絡流量
- dna螺旋
- shell下的俄羅斯方塊
- 正經英語
- 有意思
- 問題記錄
- python相關
- pip安裝缺少openssl和libssl
- shell相關
- debian下執行數組變量報錯
- 服務相關問題
- ububtu安裝apache2報錯
- php升級mongo拓展插件
- elk節點分片失敗
- 操作系統相關問題
- 運維記錄
- 數據庫相關
- mongo3.4安裝以及優化參數腳本
- mongodb版本升級及優化
- redis動態取消rdb保存配置
- 代理負載均衡相關
- haproxy匹配ua規則分離搜索引擎流量
- haproxy不記錄某個域名或多個域名的日志
- 其他相關
- ImageMagick升級
- NFS強制卸載掛載
- 命令相關
- curl獲取指定域名ip的狀態碼
- awk相關記錄
- rsync傳輸限速指定ssh端口
- 操作系統相關
- centos使用阿里源
- ubuntu更換國內源
- 查看操作系統版本
- 內核優化
- Centos7修改語言為英文
- debian安裝xfs格式化工具
- 查看磁盤信息
- debian的啟動管理工具
- debian安裝vmtools
- debian重啟網卡不生效的解決
- 容器虛擬化
- Docker相關
- dokcer安裝
- docker常用命令
- docker簡單腳本
- Dockerfile相關
- 帶ssh的debian鏡像
- deocker創建簡單鏡像
- 官方文檔
- docker-compose安裝
- 報錯
- docker鏡像加速
- k8s相關
- k8s常用命令
- k8s名詞解釋
- k8s相關的 yaml文件
- VM相關
- 使用VMwareWorkstation批量操作linux虛擬機
- 在windows下使用shell批量操作Vmwarworkstation
- windows下批量操作虛擬機
- ESXI相關
- vsphere網絡相關
- 小愛好
- 不方便展示