Paramiko ライブラリを利用して SSH 接続を確立し、リモート マシンのコマンドラインから出力を取得する場合、ユーザーは、意図した出力に付随する、謎の [2J×1b[1;1H や u などの無関係な文字に遭遇することがよくあります。この一見不必要に見えるデータは混乱を引き起こし、重要な情報を抽出する際に悪影響を与える可能性があります。
ジャンクのソース
わかりにくい文字はジャンクではなく、むしろジャンクです。ユーザーフレンドリーな方法で出力をフォーマットおよび表示するために端末クライアントによって使用される ANSI エスケープ コード。これらのコードは、対話型端末の確立を前提としているため、SSHClient.invoke_shell メソッドを使用するときに Paramiko によって自動的に使用されます。
コマンドを実行するためのより良い方法
Ifタスクにはリモート コマンドの実行の自動化が含まれます。より適切な方法は SSHClient.exec_command です。このアプローチでは、デフォルトで疑似端末の割り当てがバイパスされ、追加の文字が削除されます。
代わりに: コードをエスケープする
回避策として、特定の技術を使用して文字列から ANSI エスケープ シーケンスを取得します。ただし、このアプローチでは不十分な可能性があり、さらに複雑な問題が発生する可能性があります。
Unicode エンコーディング
最後に、文字列値の前にある u プレフィックスは実際のエンコーディングの一部ではありません。これは文字、特に英語以外の言語に属する文字を正確に表現するために重要な要素です。
以上がParamiko を使用してリモート CLI データを取得するときに不要な出力を削除する方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。