使用paramiko模块把本地文件上传到远程服务器

不同的主机之间传送文件可以使用scp命令,但是Python中的paramiko模块也可是实现此功能,代码如下:

import settings_file  # 配置的远程主机信息文件,以及存放路径文件
import paramiko


class WriteImgToRemote(object):
    '''把图片写入远程主机'''

    def __init__(self):
        self.remote_host = settings_file.REMOTE_HOST
        self.remote_port = settings_file.REMOTE_PORT
        self.remote_user = settings_file.REMOTE_USER
        self.remote_pwd = settings_file.REMOTE_PWD



    def call_back(self,size,file_size):
        '''上传成功的回调函数'''
        pass

    def put_img_remote(self,club_num,local_path,dest_file_name):
        '''
        本地图片上传到远程机器
        :param club_num: 俱乐部微信号
        :param local_path: 本地图片路径
        :param dest_file_name: 远程存储的文件名,例如:hello.png
        :return:
        '''
        transport = paramiko.Transport((self.remote_host, self.remote_port))
        transport.connect(username=self.remote_user, password=self.remote_pwd)

        sftp = paramiko.SFTPClient.from_transport(transport)

        # 判断当前俱乐部的文件夹是否存在,不存在就创建
        SAVE_PATH = settings_file.SAVE_PATH
        try:
            sftp.stat(SAVE_PATH+club_num)
            print('当前俱乐部:%s 文件夹存在'%club_num)
        except Exception as e:
            print('开始创建文件夹 %s'%club_num)
            club_folder = SAVE_PATH + club_num
            sftp.mkdir(club_folder)
            print('创建完成')

        remote_path = SAVE_PATH + club_num + '/' + dest_file_name
        sftp.put(local_path,remote_path,self.call_back)

        transport.close()




if __name__ == '__main__':
    local_path = '/home/tom/img/1930577776.png'
    dest_file_name = '77776.png'

    obj = WriteImgToRemote()
    obj.put_img_remote('my_club',local_path,dest_file_name)

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值