天天看点

python通过ssh连接服务器,上传、下载文件

import paramiko


class LinuxFile:

    def __init__(self, ip, port, username, password):
        try:
            self.ip = ip
            self.port = port
            self.username = username
            self.password = password
            self.transport = paramiko.Transport((str(self.ip), int(self.port)))
            self.transport.connect(username=self.username, password=self.password)
            self.sftp = paramiko.SFTPClient.from_transport(self.transport)
        except Exception as e:
            raise e

    def up_file(self, localhost_file, server_file):
        """
        将本地文件上传至服务器
        :param localhost_file: 本地文件路径
        :param server_file: 服务器保存路径
        :return:
        """
        self.sftp.put(localhost_file, server_file)

    def down_file(self, localhost_file, server_file):
        """
        将服务器文件下载至本地
        :param localhost_file: 本地文件路径
        :param server_file: 服务器保存路径
        :return:
        """
        self.sftp.get(localhost_file, server_file)

    def close(self):
        """
        关闭服务器
        :return:
        """
        self.transport.close()


if __name__ == '__main__':
    test = LinuxFile('192.168.16.105', '22', 'root', 'admin123')
    test.up_file('../2020-10-11_20-21-28.py', '/root/2020-10-11_20-21-28.py')
    test.down_file('/root/2020-10-11_20-21-28.py','2020-10-11_20-21-28.py')