Apabila menggunakan pustaka Paramiko untuk mewujudkan sambungan SSH dan mendapatkan keluaran daripada baris arahan mesin jauh , pengguna sering menemui aksara luar yang mengiringi output yang dimaksudkan, seperti [2Jx1b[1;1H dan u] yang misteri. Data yang kelihatan tidak diperlukan ini boleh menyebabkan kekeliruan dan boleh memudaratkan semasa pengekstrakan maklumat penting.
Punca Sampah
Watak-watak yang membingungkan bukan sampah tetapi sebaliknya Kod melarikan diri ANSI digunakan oleh pelanggan terminal untuk memformat dan memaparkan output dengan cara yang mesra pengguna. Kod ini digunakan secara automatik oleh Paramiko apabila menggunakan kaedah SSHClient.invoke_shell, kerana ia menganggap penubuhan terminal interaktif.
Cara yang Lebih Baik untuk Melaksanakan Perintah
Jika tugas anda melibatkan mengautomasikan pelaksanaan arahan jauh, kaedah yang lebih sesuai ialah SSHClient.exec_command. Pendekatan ini memintas peruntukan terminal pseudo secara lalai, menghapuskan aksara tambahan.
Sebagai alternatif: Melarikan Diri dari Kod
Sebagai penyelesaian, adalah mungkin untuk mengalih keluar Urutan pelarian ANSI daripada rentetan menggunakan teknik tertentu. Walau bagaimanapun, pendekatan ini mungkin tidak mencukupi dan boleh menyebabkan komplikasi tambahan.
Pengekodan Unikod
Akhir sekali, awalan u di hadapan nilai rentetan bukan sebahagian daripada nilai sebenar rentetan tetapi sebaliknya menunjukkan pengekodan Unikod, satu aspek penting untuk mewakili aksara dengan tepat, terutamanya yang dimiliki oleh bahasa bukan bahasa Inggeris.
Atas ialah kandungan terperinci Bagaimana untuk Menghapuskan Output yang Tidak Diingini Apabila Mengambil Data CLI Jauh Menggunakan Paramiko?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!