Berurusan dengan Nilai Sampah dalam Output SSH CLI Jauh melalui Paramiko
Semasa menggunakan perpustakaan Paramiko Python untuk sambungan SSH dan pengambilan keluaran dari mesin jauh CLI, pengguna mungkin menghadapi nilai sampah yang tidak diingini yang diselingi dengan output yang dikehendaki. Nilai ini, selalunya dalam bentuk kod melarikan diri ANSI seperti "x1b[2Jx1b[1;1H", boleh mengacaukan output dan menghalang kebolehgunaannya.
Memahami Sumber Nilai Sarap
Bertentangan dengan andaian bahawa ia adalah sampah, kod melarikan diri ini penting untuk paparan output yang betul dalam persekitaran terminal. Mereka memberikan arahan kepada terminal tentang cara memformat teks, menggerakkan kursor dan sebagainya. Walau bagaimanapun, jika anda tidak menggunakan terminal interaktif, kod ini boleh menimbulkan masalah.
Penyelesaian: Melaksanakan Perintah Secara Interaktif
Secara lalai, kaedah SSHClient.invoke_shell Paramiko memulakan sesi terminal interaktif, yang membawa kepada kemasukan kod melarikan diri. Untuk menghapuskan ini, tukar kepada kaedah exec_command, yang menjalankan arahan tanpa terminal pseudo (melainkan didayakan secara eksplisit):
<code class="python">stdin, stdout, stderr = client.exec_command('ls')</code>
Penyelesaian Alternatif
Jika atas sebab tertentu anda perlu menggunakan saluran "shell", anda boleh menciptanya secara manual tanpa terminal pseudo. Selain itu, anda boleh menggunakan penyelesaian berikut untuk mengalih keluar jujukan melarikan diri daripada output rentetan:
<code class="python">import re output = re.sub(r'(\x1b\[.*?m)', '', output)</code>
Nyahkod Pengekodan Output
Perhatikan bahawa aksara "u" di hadapan output rentetan dalam soalan menandakan pengekodan Unicode. Ini diperlukan untuk mengendalikan aksara bukan ASCII dalam output.
Atas ialah kandungan terperinci Bagaimana untuk Menangani Nilai Sampah dalam Output SSH CLI Jauh dengan Paramiko?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!