一、Python和paramiko就不详细介绍了,简单介绍:
1)Python处理服务器批量任务有极高的便捷性
2)Paramiko是一个强大的python库,主要功能是远程管理主机
3)本文使用paramiko其中的SSHClient方法,借其远程访问
二、本脚本的功能点详细介绍:
1、使用paramiko库的SSHClient方法从而使用SSH的主机管理功能。
2、使用threading,python下的多线程库,进行多主机多线程管理,实现并发执行管理。
3、使用sys库的argv方法,使其python脚本在服务器下命令化
4、使用time库的clock方法计算命令执行所用的时间
三、脚本代码:
#!/usr/bin/env python
#coding=utf-8
import paramiko
import threading
from os import path
from sys import argv
from time import clock
#多线程锁
lock = threading.RLock()
#读取主机个数
def hostcount(FILE):
j=1
file = open(FILE,"r")
for i in file:
if i.endswith("\n"):
j = j+1
file.close()
return j
#执行命令
def ssh2(ip,username,passwd,CMD):
lock.acquire()
try:
ssh = paramiko.SSHClient()
tiem_start = clock()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect(ip,22,username,passwd,timeout=5)
stdin,stdout,stderr = ssh.exec_command(CMD)
out = stdout.read()
err = stderr.read()
time_end = clock()
print '================ START ==================='
print '[CONNECT SUCCEED] | IP = %s\n' % (ip)
print out
if err != " ":
print err
print '=========== END Time: %.2fs =============='%(time_end - tiem_start)
ssh.close()
except:
print '================ START ==================='
print '[CONNECT FALSE] IP = %s \n' %(ip)
print '================= END ===================='
lock.release()
def main(FILE,CMD):
#cmd = "date"
f = open(FILE,'r')
j = hostcount(FILE)
threads = j
while True:
t = f.readline()
host = t.strip(",").split(",")
if len(host) == 1:
break
ip = host[0]
username = host[1]
passwd = host[2]
a = threading.Thread(target=ssh2,args=(ip,username,passwd,CMD))
a.start()
f.close()
return 0
#功能测试
if __name__ == '__main__':
try:
if path.exists(argv[1]) == False:
print "[ERROR] file not found. Please enter the correct file"
exit(1)
FILE = argv[1]
CMD = argv[2]
main (FILE, CMD)
except:
print "[ERROR] Please input command"
print "Hello:"
print "usage: "+argv[0]+" "
print "Rigorous host name file format."
print "ip,username,password,(3 a ',')"
#main("hosts.txt","date")
四、主机列表文件:
严格的格式(三个逗号隔开):主机名,用户名,密码,
hostname,username,password,
hostname,username,password,
脚本使用方法脚本看提示,脚本需要执行权限。
本脚本的功能点详细介绍:
1、使用paramiko库的SSHClient方法从而使用SSH的主机管理功能。
2、使用threading,python下的多线程库,进行多主机多线程管理,实现并发执行管理。
3、使用sys库的argv方法,使其python脚本在服务器下命令化
4、使用time库的clock方法计算命令执行所用的时间
脚本代码: