Paramiko模块批量管理:
通过调用ssh协议进行远程机器的批量命令执行.
一、使用用户名密码连接远程主机:
(登录远程,执行命令,返回结果,退出) 一次的SSH连接.
#!/usr/bin/env python import paramiko import sys,os host = sys.argv[1] user = ‘www‘ passpord = ‘1q2w3e4r5t--‘ cmd = sys.argv[2] s = paramiko.SSHClint() #绑定实例 s.load_system_host_keys() #加载本机HOST主机文件 #s.set_missing_host_key_policy(paramiko.AutoAddPolicy()) //连远程主机时会先检查本机的host文件,如果之前没有连接过这台机器则会报错,所用这句的加上。 s.connect(host,22,user,password,timeout=5) #连接远程主机 stdin,stdout,stderr=s.exec_command(cmd) #执行命令(输入,输出,错误返回结果) cmd_result = stdout.read(),stderr.read() #读取所用命令结果 for line in cmd_result: #循环输出,并打印出结果. print line,
二、使用Key连接远程:
本机生成key :ssh-keygen
#!/usr/bin/env python import paramiko import sys,os host = sys.argv[1] user = ‘www‘ #passpord = ‘1q2w3e4r5t--‘ cmd = sys.argv[2] s = paramiko.SSHClint() #绑定实例 s.load_system_host_keys() #加载本机HOST主机文件 #s.set_missing_host_key_policy(paramiko.AutoAddPolicy()) //连远程主机时会先检查本机的host文件,如果之前没有连接过这台机器则会报错,所用这句的加上。 #pkey_file=‘/home/www/.ssh/id_rsa‘ #私钥文件 key=paramiko.RSAKey.from_private_key_file(pkey_file) s.connect(host,port,username,pkey=key,timeout=5) stdin,stiout,stderr=s.exec_command(cmd) #print split_line,h.ip,split_line s.connect(host,22,user,pkey=key,timeout=5) #连接远程主机 stdin,stdout,stderr=s.exec_command(cmd) #执行命令(输入,输出,错误返回结果) cmd_result = stdout.read(),stderr.read() #读取所用命令结果 for line in cmd_result: #循环输出,并打印出结果. print line,
三、Paramiko SFTP传送文件:
#!/usr/bin/env python import paramiko import sys,os host = ‘hostname‘ user = ‘www‘ passpord = ‘1q2w3e4r5t--‘ s = paramiko.SSHClint() #绑定实例 s.load_system_host_keys() #加载本机HOST主机文件 #s.set_missing_host_key_policy(paramiko.AutoAddPolicy()) t=paramiko.Transport((host,22)) #方法 t.connect(username=user,password=password) #pkey_file=‘/home/www/.ssh/id_rsa‘ #私钥文件 key=paramiko.RSAKey.from_private_key_file(pkey_file) t.connect(username=username,pkey=key) sftp=paramiko.SFTPClient.from_transport(t) #将方法t绑定到实例中。 sftp.get(‘/tmp/paramiko1.py‘,‘paramiko2.pyy‘) #从远程向本地下载,将/tmp/paramiko1.py‘下载到当前目录,并命名为‘paramiko2.pyy‘ sftp.put(‘paramiko1.py‘,‘/tmp/paramiko1.py‘) #上传文件,将本地文件‘paramiko1.py‘上传至远程目录/tmp/下. s.close()
原文:http://www.cnblogs.com/saneri/p/5084229.html