批量管理服务器及执行命令

 前言:

     当我们在测试或运维的时候如果想要使其多条主机同时执行相同的命令的时候,我们以前得办法是

 分别登录这些主机,执行命令。如果主机多的时候,将会消耗大量的时间 ,不利于我们的批量管理。

思路:

     如何通过脚本,多线程一起连接这些主机,并同时下发命令?,且可以执行多条命令,在此,我利用python

的paramiko模块实现了此简单的功能

脚本的运行环境:

     python 3.0以上,(可以修改下代码,2.x也可以运行),由于paramiko模块不是python 的标准库,所以

要自行安装,

脚本的代码:

  

 1 #-*- coding: utf-8 -*-
 2 #!/usr/bin/python 
 3 import paramiko
 4 import threading
 5 from time import sleep
 6 
 7 
 8 def ssh2(ip,username,passwd,cmd):
 9     try:
10         
11         ssh = paramiko.SSHClient()
12         print('正在登陆各台服务器')
13         print ('%s\tOK\n'%(ip))
14         ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
15         ssh.connect(ip,22,username,passwd,timeout=5)
16         for m in cmd:
17             stdin, stdout, stderr = ssh.exec_command(m)
18 #           stdin.write("Y")   #简单交互,输入 ‘Y’ 
19             out = stdout.readlines()
20             #print (stdout)
21             #屏幕输出
22             for o in out:
23                 print (o),
24         #print ('%s\tOK\n '%(ip))
25         
26         
27         ssh.close()
28     except :
29          print ('%s\tError 不能正常连接这台\n'%(ip))
30               
31 if __name__=='__main__':
32     cmd=[]  
33     username = "root"  
34     passwd = "zxsoft0#"   
35     print ("测试环境的服务有......")
36     ip=['192.168.202.102','192.168.202.103','192.168.202.101','192.168.202.11','192.168.202.12','192.168.202.13']
37     for i  in  ip:
38       print (i)
39       
40     while 1:
41       y=input('如果你想继续添加多条命令请输入yes,如果是其他则退去:')
42       if  y=='yes':
43        x=input('请输入你要批量执行的命令:')
44        cmd.append(x)
45       else:
46         break
47     #你要执行的命令列表
48     print  ('如果命令必须是手动结束,所以在执行脚本一段时间后,如果想停止攻击,重新执行脚本输入命令  killall +命令 ')      
49     for i  in  ip:
50       
51      
52       a=threading.Thread(target=ssh2,args=(i,username,passwd,cmd))
53       a.start()
54       

   脚本执行的结果

转载于:https://www.cnblogs.com/yubenliu/p/5787394.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值