【发布时间】:2020-08-16 06:56:18
【问题描述】:
我正在使用 Paramiko 2.7.1,使用简单的客户端实现在远程 SSH 服务器上运行命令。
在我的大多数主机上,它都很好用。输入命令出去,输出(如果存在)回来。
一种特定类型的主机(准确地说是 IBM VIOS 分区)让我头疼,因为命令执行,但输出始终为空。 我在交互式会话中使用 PuTTY 来记录所有 SSH 数据包并检查是否存在任何差异,并且至少在交互式会话期间,工作主机和非工作主机之间没有差异。 我已启用 Paramiko 日志记录:
basicConfig(level=DEBUG)
logging.getLogger("paramiko").setLevel(logging.DEBUG)
log_to_file('ssh.log')
但输出不会转储每个数据包。我已经搜索了可以转储这些数据包的任何参数或方法,但我发现是空的。
Wireshark 不是一个选项,因为我们正在谈论加密连接。
我宁愿继续使用exec_command,而不必重构所有内容并适应使用 SSH shell。
所以,最后。有什么方法可以转储与 Paramiko 的整个 SSH 会话?我可以处理 SSH 数据包或原始数据。
编辑 1:我记得 PuTTY 的 plink.exe 执行 ssh exec 命令,所以我用它来比较 SSH 服务器的输出并偶然发现了我的基本问题的解决方案:https://www.ibm.com/support/pages/unable-execute-commands-remotely-vio-server-padmin-user-ssh
不过,我宁愿用 Paramiko 捕捉会话,因为我不会总是能够使用其他工具进行模拟......
【问题讨论】:
-
这看起来像XY problem。我建议你问一个关于你的实际问题的问题,而不是你认为可以帮助你调试问题的问题(我认为数据包调试不会帮助你)。
-
我很欣赏评论,但即使我的实际问题已经定义,我想知道的是如何使用 paramiko 调试 SSH 会话。在微控制器的汇编程序中磨砺了我的牙齿,我习惯于深入调试问题并且无法比较会话让我感到厌烦。从好的方面来说,没有 10 分钟过去了,我记得 putty 有 plink.exe,它也执行 ssh exec 命令,我可以用它来调试。所以我现在的问题已经用另一个工具解决了,但我仍然想知道如何记录 ssh 数据包。服务器之间的输出存在差异