使用Paramiko 消除SSH 輸出中的垃圾值
透過Paramiko 的SSH 函式庫從遠端電腦的CLI 取得輸出時,可能會遇到未經請求的字元例如“x1b[2Jx1b[1;1H”和“u”。這些是 ANSI 轉義碼,用於修飾終端客戶端的輸出。
原因和解決方法
Paramiko 的 SSHClient.invoke_shell 提示輸入偽終端,導致這些轉義代碼出現。對於自動執行命令,建議使用 SSHClient.exec_command,它預設不分配偽終端。
<code class="python">stdin, stdout, stderr = client.exec_command('ls')</code>
替代解決方案
如果使用「shell」通道是必需的,沒有偽終端也是可行的,但Paramiko的SSHClient.invoke_shell不提供此功能。您可以手動建立“shell”通道。
<code class="python"># Not supported by Paramiko SSHClient.invoke_shell channel = ssh_client.get_transport().open_channel("session") channel.exec_command("ls")</code>
Unicode 編碼說明
輸出字串中的「u」前綴表示 Unicode 編碼,應該保留。
以上是如何消除 Paramiko SSH 輸出中的垃圾值?的詳細內容。更多資訊請關注PHP中文網其他相關文章!