Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk Menangani Nilai Sampah dalam Output SSH CLI Jauh dengan Paramiko?

Bagaimana untuk Menangani Nilai Sampah dalam Output SSH CLI Jauh dengan Paramiko?

Susan Sarandon
Susan Sarandonasal
2024-10-19 07:08:31382semak imbas

How to Deal with Junk Values in Remote SSH CLI Output with Paramiko?

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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn