paramiko采用交互式shell获取远程脚本返回数据 判断完成
时间: 2023-09-12 17:10:06 浏览: 144
使用 Paramiko 采用交互式 Shell 的方式连接远程服务器并执行脚本,可以通过以下步骤获取脚本的返回数据并判断脚本是否执行完成:
1. 打开 SSH 连接并获取交互式 Shell
```python
import paramiko
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect(hostname='remote_host', username='username', password='password')
channel = ssh.invoke_shell()
```
2. 执行脚本并等待脚本执行完成
```python
channel.send('python /path/to/script.py\n')
while not channel.recv_ready():
continue
while channel.recv_ready():
output = channel.recv(1024).decode()
```
3. 判断脚本是否执行完成
与前面的方法类似,可以通过判断脚本的返回值来判断脚本是否执行完成。可以使用以下代码获取脚本的返回值:
```python
exit_status = channel.recv_exit_status()
if exit_status == 0:
print('脚本执行成功')
else:
print('脚本执行失败')
```
完整代码如下:
```python
import paramiko
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect(hostname='remote_host', username='username', password='password')
channel = ssh.invoke_shell()
channel.send('python /path/to/script.py\n')
while not channel.recv_ready():
continue
while channel.recv_ready():
output = channel.recv(1024).decode()
exit_status = channel.recv_exit_status()
if exit_status == 0:
print('脚本执行成功')
else:
print('脚本执行失败')
```
阅读全文