首页  >  文章  >  后端开发  >  如何使用 Paramiko 处理远程 SSH CLI 输出中的垃圾值?

如何使用 Paramiko 处理远程 SSH CLI 输出中的垃圾值?

Susan Sarandon
Susan Sarandon原创
2024-10-19 07:08:31381浏览

How to Deal with Junk Values in Remote SSH CLI Output with Paramiko?

通过 Paramiko 处理远程 SSH CLI 输出中的垃圾值

使用 Python 的 Paramiko 库进行 SSH 连接和从远程计算机的输出检索时CLI 中,用户可能会遇到散布在所需输出中的不需要的垃圾值。这些值通常采用 ANSI 转义码的形式,例如“x1b[2Jx1b[1;1H””,可能会使输出混乱并妨碍其可用性。

了解垃圾值的来源

与垃圾代码的假设相反,这些转义码对于终端环境中正确的输出显示至关重要。它们向终端提供有关如何设置文本格式、移动光标等的说明。但是,如果您不使用交互式终端,这些代码可能会出现问题。

解决方案:交互式执行命令

默认情况下,Paramiko 的 SSHClient.invoke_shell 方法会启动一个交互式终端会话,这会导致包含转义码。要消除此问题,请切换到 exec_command 方法,该方法无需伪终端即可运行命令(除非显式启用):

<code class="python">stdin, stdout, stderr = client.exec_command('ls')</code>

替代解决方案

如果出于某种原因您需要使用“shell”通道,您可以手动创建它,而无需伪终端。此外,您可以使用以下解决方法从字符串输出中删除转义序列:

<code class="python">import re
output = re.sub(r'(\x1b\[.*?m)', '', output)</code>

解码输出编码

请注意前面的“u”字符问题中的字符串输出表示 Unicode 编码。这对于处理输出中的非 ASCII 字符是必要的。

以上是如何使用 Paramiko 处理远程 SSH CLI 输出中的垃圾值?的详细内容。更多信息请关注PHP中文网其他相关文章!

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