最近在研究Paramiko,Paramiko可以非常方便的实现基于SSH协议的远程连接,可以基于
口令,也可以无口令RSA非对称密钥,亦可以实现SFTP上传下载操作,安全高效,再结合多
进程或者是多线程就可以实现并行处理,写了一个简单的SFTP基于Key多进程批量并发上传
文件的实现案例,供以后参考。
安装加密模块和Paramiko模块
下载:pycrypto-2.6.1.tar.gz
paramiko-1.10.1.tar.gz
安装:
tar -zxf pycrypto-2.6.1.tar.gz
python setup.py build
python setup.py install
基于RSA非对称密码(公钥和私钥),需要在服务端创建密钥,并将公钥分发到客户端
创建RSA密钥对:ssh-keygen -t rsa
将私钥拷贝到客户端:ssh-copy-id root@192.168.3.181
代码如下:
#!/usr/bin/env python
#coding:utf-8
import paramiko,sys,os
from multiprocessing import Pool
def sftp_put(IP,Port,User,Locdir,Rmtdir):
pravie_key_path = '/root/.ssh/id_rsa'
key = paramiko.RSAKey.from_private_key_file(pravie_key_path)
t = paramiko.Transport((IP,Port))
t.connect(username=User,pkey=key)
sftp = paramiko.SFTPClient.from_transport(t)
sftp.put(Locdir, Rmtdir)
t.close()
def read_file():
global list
list=[]
with open('userinfo.txt','rb') as f:
for line in f:
list.append(line)
def print_ip():
global dic
dic={}
for i in range(len(list)):
lip=list[i].split()[0]
dic[i]=list[i]
print '【%d】 %s'%(i,lip)
def judge():
global IPList
IPList=[]
while True:
inp=raw_input('
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/4588/viewspace-2820086/ ,如需转载,请注明出处,否则将追究法律责任。