ITPub博客

首页 > IT职业 > IT职场 > SFTP基于Key多进程批量并发上传文件实现案例(python)

SFTP基于Key多进程批量并发上传文件实现案例(python)

IT职场 作者:kikiboy 时间:2021-09-09 10:19:10 0 删除 编辑

    最近在研究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/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2019-08-13

  • 博文量
    0
  • 访问量
    465