【发布时间】:2019-12-29 19:10:35
【问题描述】:
我在远程设备上使用 paramiko 进行 SSH。
我正在使用 paramiko shell(invoke_shell() 方法)与他们进行交互以进行交互。
paramiko shell 的主要问题(正如我在此处阅读的许多答案)是不能保证 paramiko SSHClient 方法表明服务器完成写入,例如 recv_exit_status() 和 exit_status_ready() 将按预期运行。
因此,我创建了一种机制,该机制将读取 shell 输出的最后一行,并确定该行是否仅包含 shell 的提示,在这种情况下命令执行已完成。
这适用于提示没有变化。
现在我在这里读到Wait until task is completed on Remote Machine through Python 'exec_command()' 方法返回元组'stdin、stdout、stderr' 和执行stdout.channel.recv_exit_status() 将阻塞通道直到它完成。
我的问题是我是否会创建这样一个元组并将stdout.channel.recv_exit_status() 与stdout 预先形成,当我打开每个交互式命令时我会得到(这意味着我将执行'shell_chan.send('something')'然后会做stdout.channel.recv_exit_status()) 它会完成这项工作吗?只有在交互命令完成后才会返回?
【问题讨论】:
标签: python shell ssh paramiko interactive