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

 前言:

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

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

思路:

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

脚本执行的结果

时间: 2024-11-05 14:50:13

批量管理服务器及执行命令的相关文章

Linux批量管理服务器小工具--PSSH

Linux批量管理服务器小工具--PSSH 一.简介 pssh -- parallel ssh program pssh  is  a program for executing ssh in parallel on a number of hosts.  It provides features such as sending input to all of the processes, passing a password to ssh, saving output to files, an

## ansible 批量在远程主机上执行命令 ##

目的 代码发布系统 前戏 ansible 批量在远程主机上执行命令 openpyxl 操作excel表格 puppet ansible slatstack ansible epel源 第一步: 下载epel源 wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo 第二步: 安装ansible yum install -y ansible salt 控制节点需要安装salt-master salt

史上图形最简单Linux-Unix-Windows批量管理服务器软件工具

Windows 下 批量管理,批量监控,批量操作,批量安全扫描 linux Solaris Aix HP-Unix Windows 等操作系统界面最简洁的图形工具. 批量执行多台服务器命令,批量修改密码,批量执行服务器脚本,批量上传文件,解放你的双手,五分钟批量执行上千台服务器命令. Unix 实验室服务器批量管理监控系统,简称 UnixShellManager UnixShellManager 分简装版, 标准版,企业版. UnixShellManager 实验室批量管理监控系统,能够实现对

Python自动化运维开发之paramiko(远程批量管理服务器)

一:简介 paramiko是用python语言写的一个模块,遵循SSH2协议,支持以加密和认证的方式,进行远程服务器的连接.它仅需要在本地上安装相应的软件(python以及PyCrypto),对远程服务器没有配置要求,对于连接多台服务器,进行复杂的连接操作特别有帮助. 二:安装方法 安装paramiko有两个先决条件,python和另外一个名为PyCrypto的模块.唯一麻烦的就是安装PyCrypto时,需要GCC库编译,如果没有GCC库会报错,会导致PyCrypto以及paramiko无法安装

windows服务器远程执行命令(PowerShell+WinRM)

Windows 远程管理 (WinRM) 是 WS-Management 协议的 Microsoft 实现.该协议是基于简单对象访问协议 (SOAP) 的.防火墙友好的标准协议,使来自不同供应商的硬件和操作系统能够互操作.WS-Management 协议由硬件和软件制造商群体开发,作为一种公共标准,可用于与实现该协议的任何计算机设备远程交换管理数据. 使用PowerShell对服务器远程管理,要在远程服务器上启用WinRM. 一.知识储备: 1.WinRM相关操作 开启WinRM服务: Enab

ssh批量登录 上传 执行命令 下载文件

用途: 搞linux主机的内网,拿到通用的账户密码,批量登录,上传系统信息收集脚本,把执行的结果拉回本地,用于分析. 缺点: 不支持多线程  密码必须正确切可连通  端口硬编码为22 如果不是22 请自行修改 执行过程: 执行ssh.py root root 会自动登录ssh,上传本地文件目录下的1.py文件到linux服务器tmp目录,执行/tmp/1.py文件,删除/tmp/1.py文件,把1.py执行的文件的生成的test.txt下载回本地.注意:下载的文件名已硬编码在1.py文件28行,

【shell】-【批量远程MySQL,执行命令】-【工作总结】

昨天下班前,老板给了一批LOG数据库IP地址,需要统计LOG表里Message字段top 10的结果,并输出到一个excel文件里.抽查看了下,有两种格式的以当天日期结尾的表名.由于数量太多,时间紧迫,只好写批量脚本解决问题.并以此扩展,解析其中的几个常用shell程序,主体脚本写在文章后半部分.学习shell重在灵活运用命令,形成自己的思维方式,和书写习惯,脚本参考即可. 解题过程步骤:1.梳理IP地址及对应表名2.确定查询SQL3.批量查询数据 完整脚本附在文章最后 解析下常用到的知识点:

python 使用paramiko, pymysql实现批量管理服务器

使用paramiko,pymysql批量管理主机, 用户信息,及主机信息存在数据库中 例子: #!/usr/bin/python # --*-- coding:utf-8 --*-- import paramiko import pymysql from threading import Thread, RLock import sys def connect_user_tb():     """返回执行sql结果"""     conn = p

ssh远程连接linux服务器并执行命令

详细方法: SSHClient中的方法 参数和参数说明 connect(实现ssh连接和校验) hostname:目标主机地址 port:主机端口 username:校验的用户名 password:登录密码 pkey:私钥方式身份验证 key_filename:用于私钥身份验证的文件名 timeout:连接超时设置 allow_agent:这是布尔型,设置False的时候禁止使用ssh代理 look_for_keys:也是布尔型,禁止在.ssh下面找私钥文件 compress:设置压缩 exec