本文為通過密碼或密鑰實現python批量自動化營運指令碼案例分享
#!/usr/bin/env python# this script comes from beijing oldboy trainning.# e_mail:70271111@qq.com# function: remote multi exec cmd by ssh.# version:1.1################################################# oldboy trainning info.# QQ 80042789 70271111# site:http://www.etiantian.org# blog:http://oldboy.blog.51cto.com# oldboy trainning QQ group: 208160987 45039636################################################import paramikoimport socketimport sys,oshost = sys.argv[1]user = sys.argv[2]port = int(sys.argv[3])auth_method = sys.argv[4]if auth_method == 'PASSWORD': password = sys.argv[5] cmd = sys.argv[6]else: cmd = sys.argv[5] s = paramiko.SSHClient() s.load_system_host_keys() s.set_missing_host_key_policy(paramiko.AutoAddPolicy())#pkey_file = '/home/alex/.ssh/id_rsa'#key = paramiko.RSAKey.from_private_key_file(pkey_file)#s.connect(host,port,username,pkey=key,timeout=5)try:if auth_method == 'SSH_KEY': pkey_file = '/home/alex/.ssh/id_rsa' key = paramiko.RSAKey.from_private_key_file(pkey_file) s.connect(host,port,user,pkey=key,timeout=5)elif auth_method == 'PASSWORD': s.connect(host,port,user,password,timeout=5) stdin,stdout,stderr = s.exec_command(cmd) cmd_result = stdout.read(),stderr.read()print "--------Result from? %s -------" % hostfor line in cmd_result: print line,s.close()except paramiko.AuthenticationException: print "\033[31;1m%s Authentication Error!\033[0m" % hostexcept socket.error: print "\033[31;1m%s Connection Refused!\033[0m" % host
執行命令:
python batch_ssh.py 10.0.0.8 oldboy 22 SSH_KEY df
python batch_ssh.py 10.0.0.9 root 33 PASSWORD 123456 df
本文出自 “老男孩linux營運” 部落格,請務必保留此出處http://oldboy.blog.51cto.com/2561410/1221129
查看本欄目更多精彩內容:http://www.bianceng.cn/Programming/extra/