python的ssh连接怎么一直获取返回值并且一直连接
时间: 2024-03-08 18:46:24 浏览: 34
要一直获取返回值并且一直连接SSH,你可以使用 Paramiko 库。Paramiko 是一个用于 SSHv2 协议的 Python 实现,可以用于连接、发送命令、上传/下载文件等操作。以下是一个使用 Paramiko 连接 SSH 并获取返回值的示例代码:
```
import paramiko
# 创建 SSH 客户端
ssh = paramiko.SSHClient()
# 自动添加主机名和主机密钥到本地 HostKeys 对象中
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
# 连接 SSH 服务器
ssh.connect(hostname='服务器地址', username='用户名', password='密码')
# 执行命令
stdin, stdout, stderr = ssh.exec_command('ls')
# 获取命令执行结果
result = stdout.read().decode()
# 输出命令执行结果
print(result)
# 关闭 SSH 连接
ssh.close()
```
这段代码可以连接到指定的 SSH 服务器,并执行 `ls` 命令,获取命令执行结果并输出。你可以在需要的地方添加循环,让程序一直执行命令并获取返回值,直到你手动停止程序或者关闭 SSH 连接。
相关问题
python的ssh连接不断开怎么一直获取返回值
可以使用 Paramiko 库来实现 Python 的 SSH 连接,并且可以通过 `invoke_shell()` 方法来获取 SSH 会话的返回值。具体的步骤如下:
1. 安装 Paramiko 库:
```python
pip install paramiko
```
2. 导入 Paramiko 库:
```python
import paramiko
```
3. 创建 SSHClient 对象,并指定连接的主机名、用户名和密码:
```python
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect(hostname='example.com', username='username', password='password')
```
4. 打开 SSH 会话,并发送命令:
```python
stdin, stdout, stderr = ssh.exec_command('ls -l')
```
5. 获取命令执行结果:
```python
output = stdout.read().decode('utf-8')
```
6. 关闭 SSH 连接:
```python
ssh.close()
```
如果需要一直获取返回值,可以使用 `invoke_shell()` 方法来打开 SSH 会话的伪终端,然后通过 `recv()` 方法来获取返回值。具体的代码可以参考下面的示例:
```python
import paramiko
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect(hostname='example.com', username='username', password='password')
channel = ssh.invoke_shell()
channel.send('ls -l\n')
output = ''
while not channel.recv_ready():
pass
while channel.recv_ready():
output += channel.recv(1024).decode('utf-8')
print(output)
ssh.close()
```
这个示例中,我们使用 `invoke_shell()` 方法打开 SSH 会话的伪终端,并发送 `ls -l` 命令。然后通过循环来等待返回结果,并将结果输出。最后关闭 SSH 连接。
python ssh client执行命令并持续返回结果
可以使用 `paramiko` 库来实现在 Python 中通过 SSH 连接执行命令并持续返回结果。以下是一个示例代码:
```python
import paramiko
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect('your_host', username='your_username', password='your_password')
stdin, stdout, stderr = ssh.exec_command('your_command', get_pty=True)
for line in iter(stdout.readline, ""):
print(line, end="")
ssh.close()
```
在这个例子中,我们首先使用 `paramiko.SSHClient()` 创建一个 SSH 连接对象,然后调用 `connect()` 方法连接到指定的主机。接着使用 `exec_command()` 方法执行指定的命令,并将 `get_pty` 参数设置为 `True`,以便在获取命令输出时保持交互的终端状态。
接下来,我们使用 `iter()` 函数和一个空字符串作为结束标志,读取 `stdout` 中的输出,并将其打印出来。最后,我们调用 `close()` 方法关闭 SSH 连接。
需要注意的是,如果你需要在执行完命令后获取命令的返回值,可以使用 `stdout.read()` 方法获取完整的输出结果。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)