invoke_shell() 怎么查看返回的结果
时间: 2023-06-02 16:04:18 浏览: 412
您可以使用recv()函数查看invoke_shell()返回的结果。具体方法:先使用recv()函数获取返回结果,再使用decode()函数将结果从字节串转换为字符串。以下是示例代码:
result = ssh.invoke_shell()
output = result.recv(1024)
print(output.decode())
相关问题
ssh_shell = ssh.invoke_shell()
当你在Python中使用`ssh.invoke_shell()`这个命令时,通常是在SSH(Secure Shell)库的帮助下,比如paramiko库,它允许你在程序中建立到远程服务器的安全连接。`invoke_shell()`函数的作用是启动一个远程shell会话,使得你可以通过这个连接像直接登录终端一样发送和接收命令。
举个例子,如果你已经有一个SSH对象`ssh`,这个操作通常是这样的序列:
1. 首先你需要初始化SSH连接并认证,如`ssh.connect(host, username, password)`。
2. 然后调用`invoke_shell()`打开一个远程shell通道,此时返回的是一个`subprocess.Popen`实例,代表了新的shell会话。
3. 你可以通过读取这个Popen对象的标准输入和输出,发送和获取命令的结果。
```python
# 假设已连接到远程主机
stdin, stdout, stderr = ssh.invoke_shell()
# 发送命令
stdin.write(b'sudo ls\n') # 对于Linux系统,假设需要sudo权限
# 接收命令结果
output = stdout.read().decode('utf-8')
print(output)
# 关闭连接
stdin.close()
stdout.close()
stderr.close()
```
python paramiko invoke_shell
`paramiko` 是一个 Python 的 SSH 库,可以用来连接远程服务器并执行命令。`invoke_shell` 方法可以打开一个交互式的 shell,可以在其中执行多个命令。
使用 `invoke_shell` 方法时,需要注意以下几点:
1. `invoke_shell` 方法返回的是一个 `Channel` 对象,可以通过该对象向远程服务器发送命令,并获取命令的输出。
2. `invoke_shell` 方法打开的是一个交互式的 shell,需要手动输入命令并等待命令执行完成后才能获取输出。
3. 由于 `invoke_shell` 方法打开的是一个交互式的 shell,因此需要使用特殊的方式来处理命令的输出,例如使用 `recv` 方法读取输出缓冲区中的数据。
下面是一个使用 `paramiko` 库和 `invoke_shell` 方法连接远程服务器并执行命令的示例代码:
```python
import paramiko
# 创建 SSH 客户端
client = paramiko.SSHClient()
# 允许连接不在 know_hosts 文件中的主机
client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
# 连接远程服务器
client.connect('hostname', username='username', password='password')
# 打开交互式 shell
channel = client.invoke_shell()
# 发送命令
channel.send('ls\n')
# 等待命令执行完成
while not channel.recv_ready():
pass
# 获取命令输出
output = channel.recv(1024).decode()
# 输出命令输出
print(output)
# 关闭连接
client.close()
```
阅读全文