Paramiko を使用した SSH 出力からのジャンク値の除去
Paramiko の SSH ライブラリを介してリモート マシンの CLI から出力を取得すると、要求されていない文字が発生する可能性があります「x1b[2J×1b[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 はこの機能を提供しません。代わりに「シェル」チャネルを手動で作成できます。
<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 中国語 Web サイトの他の関連記事を参照してください。