我正在尝试在脚本中设置SSH连接。 SSH功能负责启动连接和关闭连接。然后使用几个函数注入SSH函数以获取一些数据。
如果我使用;下面的代码可以正常工作
def ssh(self):
print('entering ...')
self.ssh = SSHClient()
self.ssh.load_system_host_keys()
self.ssh.connect('localhst:8080')
stdin, stdout, stderr = self.ssh.exec_command(
'ls -al && pwd && cd /TivoData/Log/webservices/mind2-18030.dir/ && ls -al')
stdout.channel.recv_exit_status()
lines = stdout.readlines()
for line in lines:
print(line)
yield self.ssh
print('closing ...')
self.ssh.close()
class SSHConnect:
@pytest.yield_fixture
def ssh(self, host):
print('entering ...')
self.ssh = SSHClient()
self.ssh.load_system_host_keys()
self.ssh.connect(host)
yield self.ssh
print('closing ...')
self.ssh.close()
def test_execute(self, ssh('localhost:8080'), command):
stdin, stdout, stderr = self.ssh.exec_command(
'ls -al && pwd && cd /home/bharath/ && ls -al')
stdout.channel.recv_exit_status()
lines = stdout.readlines()
for line in lines:
print(line)
stdin.close()
obj = SSHConnect()
obj.test_execute()
答案 0 :(得分:0)
您应该使用上下文管理器进行SSH连接,而不要使用装饰器。操作后,Context Manager可以保证在每种情况下都可以关闭SSH连接。 这是SSH上下文管理器实现的一个好例子:https://packetpushers.net/using-python-context-managers/