exec_command执行多个命令
时间: 2023-07-30 09:06:02 浏览: 244
使用Paramiko库的SSH连接对象的exec_command()方法可以执行单个命令。如果需要执行多个命令,可以使用SSH连接对象的invoke_shell()方法来打开一个交互式shell,并在shell中逐个执行命令。具体流程如下:
1. 使用Paramiko库的SSHClient类来建立SSH连接,如下所示:
```python
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect(hostname='hostname', port=22, username='username', password='password')
```
2. 使用SSH连接对象的invoke_shell()方法打开一个交互式shell,如下所示:
```python
shell = ssh.invoke_shell()
```
3. 依次执行需要执行的命令,可以使用shell对象的send()方法来发送命令,如下所示:
```python
shell.send('command1\n')
shell.send('command2\n')
shell.send('command3\n')
```
这里的`command1`、`command2`、`command3`可以根据需要替换为具体的命令。
4. 使用shell对象的recv()方法来读取命令执行的结果,如下所示:
```python
output = shell.recv(65535)
```
这里将读取的结果保存在`output`变量中,可以根据需要进行处理。
完整代码如下所示:
```python
import paramiko
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect(hostname='hostname', port=22, username='username', password='password')
shell = ssh.invoke_shell()
shell.send('command1\n')
shell.send('command2\n')
shell.send('command3\n')
output = shell.recv(65535)
print(output.decode())
```
注意,这里执行的是交互式shell,所以需要在发送命令时添加换行符`\n`。另外,这种方式执行的命令结果会包含命令提示符等信息,需要进行处理。
阅读全文