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/
转载文章受原作者版权保护。转载请注明原作者出处!