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

DDD
Lepaskan: 2024-10-21 06:58:30
asal
765 orang telah melayarinya

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"
Salin selepas log masuk
  1. Ubah suai Persekitaran Perintah: Ubah arahan itu sendiri untuk memasukkan tetapan persekitaran tertentu:
PATH="$PATH;/path/to/sesu" && sesu test
Salin selepas log masuk
  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)
Salin selepas log masuk

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!

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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!