zoukankan      html  css  js  c++  java
  • 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')
    
    
    
    
  • 相关阅读:
    Git fetch和git pull的区别
    git add 命令详解
    第1章——算法在计算机中的作用
    Mysql数据库中的计数器表实时更新
    Windows 7 搭建 nodejs、npm、express 环境
    设计模式之工厂模式
    设计模式之单例模式(Singleton Pattern)
    java实现合并两个已经排序的列表
    Spring+SpringMVC+Mybatis+Maven+CXF+WebService整合之服务端
    sqlserver乱码问题解决
  • 原文地址:https://www.cnblogs.com/pythonywy/p/14461956.html
Copyright © 2011-2022 走看看