通过面向对象编程思想使用paramiko中的invoke_shell,不间断发送命令为ping
时间: 2023-11-28 14:50:16 浏览: 170
好的,我们可以通过以下代码实现:
```python
import paramiko
class SSHClient:
def __init__(self, hostname, port, username, password):
self.hostname = hostname
self.port = port
self.username = username
self.password = password
self.client = paramiko.SSHClient()
self.client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
self.client.connect(hostname=self.hostname, port=self.port, username=self.username, password=self.password)
self.channel = None
def connect(self):
self.channel = self.client.invoke_shell()
def execute_command(self, command):
if not self.channel:
self.connect()
self.channel.send(command + '\n')
while not self.channel.recv_ready():
pass
output = self.channel.recv(1024).decode('utf-8')
return output.strip()
if __name__ == '__main__':
ssh = SSHClient('hostname', 22, 'username', 'password')
ssh.connect()
while True:
ssh.execute_command('ping')
```
在这个例子中,我们定义了一个`SSHClient`类来处理SSH连接和命令执行,`connect`方法用于建立SSH连接,`execute_command`方法用于执行命令并返回输出。在主程序中,我们创建一个`SSHClient`实例并不断执行ping命令。注意,我们在`execute_command`中加入了一个循环,以确保命令已经被发送到远程服务器并接收到输出。
阅读全文