python控制阿里云服务器开机,关机,重启

复制#!/usr/bin/env python
# encoding: utf-8

from aliyunsdkcore import client as clientObj
from aliyunsdkecs.request.v20140526 import StartInstanceRequest, StopInstanceRequest, \
    RebootInstanceRequest  # pip3 install aliyun-python-sdk-ecs

import traceback
instance_id_list  =  [['host名','id'].......]  #linux服务器
win_instance_id_list  =  [['host名','id'].......] #windows服务器



AccessKeyId = 'xxxxxxx'   
AccessKeySecret = 'xxxxxxx'   
region = 'xxx'
region2 = 'xxxx'

client = clientObj.AcsClient(AccessKeyId, AccessKeySecret, region)
client2 = clientObj.AcsClient(AccessKeyId, AccessKeySecret, region2)


def start_instance(instance_id, clientobj2):
    """
    开机
    :param instance_id:
    :return:
    """
    try:
        request = StartInstanceRequest.StartInstanceRequest()
        request.set_InstanceId(instance_id)
        resp = clientobj2.do_action_with_exception(request)
        # print(resp)
        print(f"开机--{resp}")
    except:
        print(f"开机--异常--{instance_id}--{traceback.format_exc()}")


def start_all_instance(params=None):
    if params =="win":
        for instance_id in win_instance_id_list:
            if len(instance_id) == 2:
                start_instance(instance_id[1], client)
            else:
                start_instance(instance_id[-1], client2)
    else:
        for instance_id in instance_id_list:
            if len(instance_id) == 2:
                start_instance(instance_id[1], client)
            else:
                start_instance(instance_id[-1], client2)

            # return


def stop_instance(instance_id, clientobj2):
    """
    关机
    :param instance_id:
    :return:
    """
    try:
        request = StopInstanceRequest.StopInstanceRequest()
        request.set_InstanceId(instance_id)
        resp = clientobj2.do_action_with_exception(request)
        # print(resp)
        print(f"关机--{resp}")
    except:
        print(f"关机--异常--{instance_id}--{traceback.format_exc()}")


def stop_all_instance(params=None):

    if params == "win":
        for instance_id in win_instance_id_list:
            if len(instance_id) == 2:
                stop_instance(instance_id[1], client)
            else:
                stop_instance(instance_id[-1], client2)
    else:
        for instance_id in instance_id_list:
            if len(instance_id) == 2:
                stop_instance(instance_id[1], client)
            else:
                stop_instance(instance_id[-1], client2)

        # return

def reboot_instance(instance_id):
    """
    重启
    :param instance_id:
    :return:
    """
    try:
        request = RebootInstanceRequest.RebootInstanceRequest()
        request.set_InstanceId(instance_id)
        resp = client.do_action_with_exception(request)
        # print(resp)
        print(f"重启--{resp}")
    except:
        print(f"重启--异常--{instance_id}--{traceback.format_exc()}")


def reboot_all_instance(params=None):
    if params == "win":
        for instance_id in win_instance_id_list:
            reboot_instance(instance_id[1])
    else:
        for instance_id in instance_id_list:
            reboot_instance(instance_id[1])


if __name__ == '__main__':
    pass
    start_all_instance('win')



posted @   小小咸鱼YwY  阅读(321)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
点击右上角即可分享
微信分享提示