检测VMware虚拟机运行状态
import subprocess
import os
# vmrun工具的路径
vmrun_path = "C:/Program Files (x86)/VMware/VMware Workstation/vmrun.exe"
# 检查虚拟机是否正在运行的命令
list_running_vms_cmd = [vmrun_path, "list"]
def startVM(vmx_path):
# 启动虚拟机的命令
start_vm_cmd = [vmrun_path, "start", vmx_path, "nogui"]
subprocess.run(start_vm_cmd, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE, text=True)
def is_vm_running(vmx_path, running_vms_output):
# 检查虚拟机是否在运行的VM列表中
return vmx_path in running_vms_output
def checkSimple(vmx_path, running_vms_output):
try:
# 检查特定的虚拟机是否正在运行
if not is_vm_running(vmx_path, running_vms_output):
print(vmx_path,"虚拟机未运行,正在尝试启动...")
# 启动虚拟机
startVM(vmx_path)
print("虚拟机启动成功。")
else:
print("虚拟机已经在运行。")
except subprocess.CalledProcessError as e:
print("执行命令时出错:", e)
except Exception as e:
print("发生错误:", e)
def getRunningVms():
result = subprocess.run(list_running_vms_cmd, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE, text=True)
# 检查命令是否成功执行
if result.returncode == 0:
# 执行成功返回脚本的输出
return result.stdout
else:
print("命令执行失败,返回码:", result.returncode)
return ""
def checkList(vmxPathList):
# 获取当前正在运行的虚拟机列表
runningVmList = getRunningVms()
for vmxPath in vmxPathList:
checkSimple(vmxPath,runningVmList)
if __name__ == "__main__":
# VMware虚拟机的路径
vmxPathList = [
"xxx\\XXX.vmx",
"xxx\\YYY.vmx"
]
checkList(vmxPathList)
然后配置一下Windows计划任务就好了
本文是原创文章,采用 CC BY-NC-ND 4.0 协议,完整转载请注明来自 程序员小航
评论
匿名评论
隐私政策
你无需删除空行,直接评论以获取最佳展示效果