使用 SSH 与 Python 的 Paramiko 检索 CLI 输出时,可以消除垃圾输出吗?
当利用 Python 的 Paramiko 库通过 SSH 连接到远程设备并从远程设备检索输出时在命令行中,在预期输出旁边遇到无关字符是很常见的。这可以包括 ANSI 转义码和其他非必要信息。
虽然这些字符可能看起来像垃圾,但它们实际上有一定的用途。终端客户端使用 ANSI 转义码来增强输出的表示,例如文本格式设置和光标定位。因此,它们不是麻烦,而是交互式终端会话的必要组成部分。
当使用 Paramiko 的 SSHClient.invoke_shell 方法(用于交互式终端会话)时,库会自动请求伪终端。此终端用于解释 ANSI 转义码并以人类可读的格式显示输出。
但是,如果您的目的是自动执行远程命令而不是参与交互式终端会话,则适当的使用的方法是SSHClient.exec_command。此方法默认不分配伪终端,从而消除了无关字符的问题。
或者,如果由于特定服务器限制而需要使用“shell”通道,则可以手动创建通道没有伪终端。但是,需要注意的是,Paramiko 的 SSHClient.invoke_shell 不支持此功能,因此您需要自己创建通道。
最后,您可能在输出中注意到的“u”前缀不是字符串值本身的一部分。相反,它表明该字符串是用 Unicode 编码的,这对于处理 ASCII 范围之外的字符至关重要。
以上是使用 Paramiko 检索 CLI 输出时如何消除垃圾输出?的详细内容。更多信息请关注PHP中文网其他相关文章!