似乎您想实现一个交互式外壳,但是您需要控制单个命令的执行。仅使用SSH接口是不可能的。SSH中的“
shell”通道是带有输入和输出的黑盒。因此,Paramiko中没有任何东西可以帮助您实现这一目标。
如果您需要确定特定命令何时完成或特定命令的输出在何处结束,则需要使用Shell的功能。
您可以通过在两者之间插入唯一的分隔符(字符串)并在通道输出流中搜索来解决该问题。使用通用的* nix shell可以实现以下效果:
channel = ssh.invoke_shell()channel.send('cd /mytargetRepn')channel.send('echo unique-string-separating-output-of-the-commandsn')channel.send('./executeWhatIWantn')
尽管我并不是真的认为您经常需要它。使特定命令正常工作所需的大多数命令(例如
cd或)
set实际上不会输出任何内容。
因此,在大多数情况下,您可以使用
SSHClient.exec_command并且您的代码将更简单,更可靠:
在Paramiko中执行多个命令,以使命令受其前辈的影响
即使您需要使用看起来像
su/的复杂对象
sudo,还是最好坚持使用
SSHClient.exec_command:
使用Python在SSH中使用“ su -l”执行命令
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)