首页 > 自动化运维 > python > Python 多进程并发执行Linux命令
2015
10-13

Python 多进程并发执行Linux命令

#coding=utf8
from multiprocessing import Pool
import paramiko
import sys
auth_method = sys.argv[1]
cmd=sys.argv[2]
host_list = (
        ('10.10.0.1', 'test', '123456'),
        ('10.10.0.2', 'test', '123456'),
        ('10.10.0.3', 'test', '123456'),
        ('10.10.0.4', 'test', '123456')
)
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
def ssh_run(host_info,cmd):
    host,user,password = host_info
    if auth_method == 'SSH_KEY':
            pkey_file = '/root/.ssh/id_rsa'
            key = paramiko.RSAKey.from_private_key_file(pkey_file)
            ssh.connect(host,22,user,pkey=key,timeout=5)
    elif auth_method == 'PASSWORD':
        ssh.connect(host,22,user,password)
    stdin, stdout, stderr = ssh.exec_command(cmd)
    print "\033[36m ===========%s=========== \033[0m " % host
    for line in  stdout.readlines():
        print line,
#启动2个进程并发执行
p = Pool(processes = 2 )
result_list = []
for h in host_list:
        result_list.append( p.apply_async(ssh_run, [h,'%s'%cmd] ) )
for res in result_list:
        print res.get()
ssh.close()




最后编辑:
作者:tshare365
这个作者貌似有点懒,什么都没有留下。
捐 赠您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请狠狠点击

留下一个回复