使用 Paramiko 消除 SSH 输出中的垃圾值
当使用 Python 的 Paramiko 库通过 SSH 连接到远程计算机并检索命令行输出时,您可能会在响应中遇到意外的“垃圾”字符,例如 [2Jx1b[1;1H 和 u.这是由于使用了 ANSI 转义码,其目的是增强交互式终端中输出的显示。
使用正确的执行方法
Paramiko 的 SSHClient .invoke_shell 自动请求伪终端,这可能导致包含这些转义码。对于自动命令执行,最好使用 SSHClient.exec_command,它默认不分配伪终端。
交互式会话的解决方法
作为交互式会话中,您可以使用 Python 库删除 ANSI 转义序列。然而,这是一种黑客行为,可能无法完全解决与使用交互式终端相关的其他问题。
手动创建 Shell 通道
如果您需要使用 shell由于特定服务器要求,您可以手动创建通道,而不使用invoke_shell。这使您可以避免分配伪终端。
Unicode 编码
最后,输出中的 u 前缀表示该字符串采用 Unicode 编码。这对于正确处理字符串中的字符非常重要。
以上是如何使用 Paramiko 从 SSH 输出中删除垃圾值?的详细内容。更多信息请关注PHP中文网其他相关文章!