雨季不再来 发表于 2024-5-22 14:27

ESXi系统如何让虚拟机定时启动、定时关机?

如题,有办法实现吗?

lzhdim 发表于 2024-5-22 14:38

在ESXi主机上,您可以使用vSphere Web Client或者REST API来设置虚拟机的定时启动和定时关机。以下是使用vSphere Web Client的方法:

    打开vSphere Web Client并连接到ESXi主机。

    在导航面板中选择“虚拟机和模板”。

    选择要设置定时任务的虚拟机,然后点击“配置”选项卡。

    在“任务计划”区域,点击“添加任务计划”。

    输入任务名称,选择“启动虚拟机”或“关机虚拟机”,并设置执行任务的时间和日期。

    选择时区,然后保存设置。

使用REST API的话,可以通过发送HTTP请求来实现定时启动和关机。以下是一个使用Python和requests库发送REST API请求的示例:

import requests
from requests.auth import HTTPBasicAuth
import json

# 配置ESXi主机的认证信息
host = "https://your-esxi-host"
username = "your-username"
password = "your-password"

# 虚拟机的ID,可以通过ESXi主机的管理界面获取
vm_id = "vm-1234"

# 定义启动和关机的函数
def schedule_start(host, username, password, vm_id, schedule):
    url = f"{host}/rest/scheduler/schedule"
    payload = {
      "name": "Start VM",
      "description": "Schedule to start a virtual machine",
      "action": {
            "type": "VirtualMachineAction",
            "vm": vm_id,
            "operation": "powerOn"
      },
      "schedule": schedule
    }
    response = requests.post(url, auth=HTTPBasicAuth(username, password), json=payload)
    print(response.json())

def schedule_stop(host, username, password, vm_id, schedule):
    url = f"{host}/rest/scheduler/schedule"
    payload = {
      "name": "Stop VM",
      "description": "Schedule to stop a virtual machine",
      "action": {
            "type": "VirtualMachineAction",
            "vm": vm_id,
            "operation": "powerOff"
      },
      "schedule": schedule
    }
    response = requests.post(url, auth=HTTPBasicAuth(username, password), json=payload)
    print(response.json())

# 定时启动的cron表达式,例如每天凌晨1点 "0 0 1 * * ?"
start_schedule = "0 0 1 * * ?"
# 定时关机的cron表达式,例如每天凌晨2点 "0 0 2 * * ?"
stop_schedule = "0 0 2 * * ?"

# 调用函数创建定时任务
schedule_start(host, username, password, vm_id, start_schedule)
schedule_stop(host, username, password, vm_id, stop_schedule)

请注意,您需要替换your-esxi-host, your-username, your-password, vm-1234, start_schedule, 和 stop_schedule 为您的ESXi主机地址、用户名、密码、虚拟机ID和相应的cron表达式。cron表达式的格式遵循ISO 8601时间周期格式,您可以通过网上的cron表达式生成器来帮助生成正确的时间周期格式。

雨季不再来 发表于 2024-5-22 14:41

lzhdim 发表于 2024-5-22 14:38
在ESXi主机上,您可以使用vSphere Web Client或者REST API来设置虚拟机的定时启动和定时关机。以下是使用vS ...

谢谢,我去试试看。



还有,主机有没有办法定时开关呢?要是做不到定时开关虚拟机,打算直接定时开关主机了。

lzhdim 发表于 2024-5-22 15:15

雨季不再来 发表于 2024-5-22 14:41
谢谢,我去试试看。




建议虚拟机,好控制一些。。。实际主机的话定时关机用软件也行,就是定时开机估计得设置远程网卡启动,
页: [1]
查看完整版本: ESXi系统如何让虚拟机定时启动、定时关机?