Rumah >pembangunan bahagian belakang >Tutorial Python >Bagaimana untuk Membetulkan Ralat \'Arahan Tidak Ditemui\' dalam Python Paramiko exec_command?

Bagaimana untuk Membetulkan Ralat \'Arahan Tidak Ditemui\' dalam Python Paramiko exec_command?

DDD
DDDasal
2024-10-21 06:58:30838semak imbas

How to Fix

Arahan Unix Gagal dengan "Arahan Tidak Ditemui" dalam Python Paramiko exec_command

Apabila melaksanakan perintah Unix menggunakan Paramiko exec_command Python, adalah mungkin untuk ditemui ralat seperti " tidak ditemui." Isu ini timbul khususnya apabila menggunakan arahan sesu, manakala arahan lain seperti ls berjaya dilaksanakan.

Punca Asas

Puncanya terletak pada tingkah laku lalai SSHClient.exec_command, yang tidak menjalankan shell "log masuk" dan tidak memperuntukkan terminal pseudo untuk sesi. Akibatnya, skrip permulaan yang berbeza mungkin dijalankan dan pembolehubah persekitaran tertentu mungkin tidak ditetapkan.

Penyelesaian Kemungkinan

Untuk menyelesaikan masalah ini, beberapa pendekatan boleh diambil:

  1. Gunakan Laluan Perintah Penuh: Gunakan laluan lengkap ke boleh laku sesu, memastikan arahan itu bebas daripada persekitaran.
  2. Laraskan Skrip Permulaan: Ubah suai skrip permulaan untuk menetapkan PATH secara konsisten untuk kedua-dua sesi interaktif dan bukan interaktif.
  3. Secara Eksplisit Invoke Log Masuk Shell: Jalankan skrip menggunakan --login dengan shell yang serasi, seperti:
bash --login -c "sesu test"
  1. Ubah suai Persekitaran Perintah: Ubah arahan itu sendiri untuk memasukkan tetapan persekitaran tertentu:
PATH="$PATH;/path/to/sesu" && sesu test
  1. Paksa Penggunaan Terminal Pseudo: (Tidak disyorkan) Dayakan peruntukan terminal pseudo dengan menetapkan get_pty kepada True:
stdin,stdout,stderr = ssh.exec_command('sesu test', get_pty=True)

Pertimbangan Tambahan

  • Sahkan LD_LIBRARY_PATH dan pastikan ia mengesan objek kongsi dengan tepat.
  • Rujuk sumber ini untuk mendapatkan cerapan lanjut:

    • [Perbezaan Pembolehubah Persekitaran Apabila Menggunakan Paramiko](https ://stackoverflow.com/questions/13781377/environment-variable-differences-when-using-paramiko)
    • [Arahan Unix Tertentu Gagal dengan "... Not Found" dalam JSch](https:// stackoverflow.com/questions/44950115/certain-unix-commands-fail-with-not-found-when-executed-through-java-using-jsch)

Atas ialah kandungan terperinci Bagaimana untuk Membetulkan Ralat \'Arahan Tidak Ditemui\' dalam Python Paramiko exec_command?. 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