Linux基础02

import paramiko

class SSHProxy(object):
    def __init__(self, hostname, port, username, password):
        self.hostname = hostname
        self.port = port
        self.username = username
        self.password = password
        self.transport = None

    def open(self):  # 给对象赋值一个上传下载文件对象连接
        self.transport = paramiko.Transport((self.hostname, self.port))
        self.transport.connect(username=self.username, password=self.password)

    def command(self, cmd):
        ssh = paramiko.SSHClient()
        ssh._transport = self.transport

        stdin, stdout, stderr = ssh.exec_command(cmd)
        result = stdout.read()
        return result

    def upload(self, local_path, remote_path):
        sftp = paramiko.SFTPClient.from_transport(self.transport)
        sftp.put(local_path, remote_path)
        sftp.close()

    def close(self):
        self.transport.close()

    def __enter__(self):
        print('with开始')
        self.open()  # 自动执行open方法
        return self

    def __exit__(self, exc_type, exc_val, exc_tb):
        print('with结束')
        self.close()  # 自动执行close方法

if __name__ == '__main__':
    # obj = SSHProxy(hostname='10.0.0.200', port=22, username='root', password='qwer')
    # obj.open()
    # print(obj.command('ls'))  # b'anaconda-ks.cfg\na.txt\na.txt.bak\n'
    # obj.upload(r'hahaha.txt', '/home/xixixi.txt')
    # obj.close()
    with SSHProxy(hostname='10.0.0.200', port=22, username='root', password='qwer') as obj:
        print(obj.command('ip a'))
        obj.upload(r'hahaha.txt', '/home/xixixi.txt')

Original: https://www.cnblogs.com/zzs0626/p/16361281.html
Author: 顺溜_7
Title: Linux基础02

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/582428/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球