首页  >  文章  >  后端开发  >  使用 Paramiko 检索 CLI 输出时如何消除垃圾输出?

使用 Paramiko 检索 CLI 输出时如何消除垃圾输出?

Patricia Arquette
Patricia Arquette原创
2024-10-19 07:10:02878浏览

How to Eliminate Junk Output When Retrieving CLI Output with Paramiko?

使用 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中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn