python paramiko 传送文件 远端到远端

本文介绍了一个Python程序,该程序利用Paramiko库实现了从一个远程服务器到另一个远程服务器的文件复制功能。通过定义`HostInfo`类来存储连接信息,并使用`sftp_remote_to_remote`函数进行文件传输。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

import paramiko

class HostInfo:

    def __init__(self, host, port, username, password, location):
        self.host = host
        self.port = port
        self.username = username
        self.password = password
        self.location = location

def sftp_remote_to_remote(remote_from, remote_to):
    sf_from = paramiko.Transport((remote_from.host, remote_from.port))
    sf_from.connect(username=remote_from.username, password=remote_from.password)
    sftp_from = paramiko.SFTPClient.from_transport(sf_from)

    sf_to = paramiko.Transport((remote_to.host, remote_to.port))
    sf_to.connect(username=remote_to.username, password=remote_to.password)
    sftp_to = paramiko.SFTPClient.from_transport(sf_to)

    with sftp_to.file(remote_to.location, 'wb') as fl:
        fl.set_pipelined(True)

        file_size = sftp_from.stat(remote_from.location).st_size
        with sftp_from.open(remote_from.location, 'rb') as fr:
            fr.prefetch(file_size)
            return sftp_from._transfer_with_callback(
                reader=fr, writer=fl, file_size=file_size, callback=None
            )


if __name__ == '__main__':
    remote_from = HostInfo('192.168.56.200', 22, 'root', 'r00tme', '/root/pkg/logstash-5.6.3.tar.gz')
    remote_to = HostInfo('192.168.56.200', 22, 'root', 'r00tme', '/root/cp/logstash-5.6.3.tar.gz')
    sftp_remote_to_remote(remote_from, remote_to)


上面的代码是通过paramiko将远端的一个文件通过本机传输到远端。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值