Linux/Windows下远程脚本执行 | paramiko/wmi | Python

"""
paramiko, wmi实现windows/linux脚本调用
"""
import paramiko
import sys
import pythoncom
import wmi

pythoncom.CoInitialize()


class ServerByPara(object):
    def __init__(self, cmd, host, user, password, system_name):
        self.cmd = cmd
        self.client = paramiko.SSHClient()
        self.host = host
        self.user = user
        self.pwd = password
        self.system_name = system_name

    def exec_linux_cmd(self):
        data = ''
        self.client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
        self.client.connect(hostname=self.host, username=self.user, password=self.pwd)
        stdin, stdout, stderr = self.client.exec_command(self.cmd, get_pty=True)
        for i in stdout.readlines():
            data += i
        return data

    def exec_dos_cmd(self):
        pythoncom.CoInitialize()
        conn = wmi.WMI(computer=self.host, user=self.user, password=self.pwd)
        # filename = r"C:\Users\Administrator\Desktop\test.bat"  # 此文件在远程服务器上
        cmd_callbat = r"cmd /c call %s" % self.cmd
        id, value = conn.Win32_Process.Create(CommandLine=cmd_callbat)  # 执行bat文件
        print(id, value)

    def run(self):
        if self.system_name == "Linux":
            data = self.exec_linux_cmd()
            print(data)
        else:
            self.exec_dos_cmd()


if __name__ == '__main__':
    # script,ip,user,password,system
    server_obj = ServerByPara(sys.argv[1], sys.argv[2], sys.argv[3], sys.argv[4], sys.argv[4])
    # server_obj = ServerByPara("/root/test.sh param01 param02", "22222222", "root", "22222222")
    server_obj.run()

猜你喜欢

转载自www.cnblogs.com/pymkl/p/9184737.html