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은 이 기능을 제공하지 않습니다. 대신 "쉘" 채널을 수동으로 생성할 수 있습니다.
<code class="python"># Not supported by Paramiko SSHClient.invoke_shell channel = ssh_client.get_transport().open_channel("session") channel.exec_command("ls")</code>
유니코드 인코딩 참고
출력 문자열의 "u" 접두사는 유니코드 인코딩을 나타냅니다. 보존하세요.
위 내용은 Paramiko SSH 출력에서 정크 값을 제거하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!