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 @ 2021-03-01 09:43  小小咸鱼YwY  阅读(303)  评论(0编辑  收藏  举报