Rumah > pembangunan bahagian belakang > Tutorial Python > 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
Lepaskan: 2024-10-19 07:08:31
asal
495 orang telah melayarinya

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>
Salin selepas log masuk

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>
Salin selepas log masuk

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!

sumber:php
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan