自定义批量发命令数 python_python远程批量执行命令

#!/usr/bin/env python

#-*- coding:utf-8 -*-

from multiprocessing import Process,Pool

import time,paramiko,sys,os

host_list = (

('16.74.185.167','root','123456','df -Th'),

('139.128.34.22','root','123456','df -Th')

)

s = paramiko.SSHClient() #绑定实例

s.load_system_host_keys() #加载本机.ssh/knows_host文件

s.set_missing_host_key_policy(paramiko.AutoAddPolicy())

def ssh_run(host_info):

ip,username,password,cmd = host_info

s.connect(ip,22,username,password,timeout=5)

stdin,stdout,stderr = s.exec_command(cmd)

cmd_result = stdout.read(),stderr.read()

print '\033[32;1m----------------%s------------------\033[0m' %ip

for line in cmd_result:

print line,

p = Pool(processes=1) #1表示单进程,根据cpu核数定,一般是几个核就写几

result_list = []

for h in host_list:

result_list.append(p.apply_async(ssh_run, [h,]))

for res in result_list:

res.get()

s.close()

命令已经写死

高级版:自定义命令显示结果并手动退出

#!/usr/bin/env python

#-*- coding:utf-8 -*-

from multiprocessing import Process,Pool

import time,paramiko,sys,os

host_list = (

('10.174.85.167','root','123456'),

('139.16.139.15','root','123456'),

('139.24.11.58','root',666448..')

)

s = paramiko.SSHClient() #绑定实例

s.load_system_host_keys() #加载本机.ssh/knows_host文件

s.set_missing_host_key_policy(paramiko.AutoAddPolicy())

def ssh_run(host_info,cmd):

ip,username,password = host_info

s.connect(ip,22,username,password,timeout=5)

stdin,stdout,stderr = s.exec_command(cmd)

cmd_result = stdout.read(),stderr.read()

print '\033[32;1m----------------%s------------------\033[0m' %ip

for line in cmd_result:

print line,

p = Pool(processes=2)

result_list = []

q='quit'

e='exit'

#------通过输入来判断------

while True:

input_cmd = raw_input("please input command:").strip()

if input_cmd == q or input_cmd == e:

break

else:

for h in host_list:

result_list.append(p.apply_async(ssh_run, [h,input_cmd]))

for res in result_list:

res.get()

s.close()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值