paramiko远程上传下载文件

在最近的一个需求中,需要将目标设备的指定文件传到本地。第一时间想到的是使用paramiko远程到远端设备,然后执行scp命令,但在实践过程中,没有找到一个比较好的交互式输入密码的方法。殊不知,paramiko本身便提供了一个很好的解决方案——SFTPClient

该模块能复用之前建立的连接通道,无需进行二次密码验证。实例如下:

import paramiko
class SSH:
    def __init__(self,host,port,username,password):
        self.host = host #主机ip
        self.port = port # ssh端口
        self.username = username #用户名
        self.password = password #密码
        self.transport = None # 连接通道
    #建立连接
    def connect(self):
        try:
            transport = paramiko.Transport((self.host,self.port))
            transport.connect(username=self.username,password=self.password)
            self.transport = transport
            print('连接成功')
        except Exception as e:
            print('连接失败')
    
    '''下载文件
    :param remote_path:远端地址
    :param local_path:本地地址
    '''
    def download_file(self,remote_path,local_path):
        try:
            sftp = paramiko.SFTPClient.from_transport(self.transport)
            sftp.get(remote_path,local_path)
            return True
        except Exception as e:
            return False
    
    '''上传文件'''
    def upload_file(self,remote_path,local_path):
        try:
            sftp = paramiko.SFTPClient.from_transport(self.transport)
            sftp.put(local_path,remote_path)
            return True
        except Exception as e:
            return False

你可能感兴趣的:(python实用特性整理及应用,python,linux,paramiko,上传下载)