Arahan Pengguna JSch Gagal dengan "... not found" Apabila Dilaksanakan melalui Java
Masalah:
Percubaan untuk melaksanakan perintah Unix tertentu melalui Java menggunakan perpustakaan JSch menghasilkan "... tidak dijumpai" ralat, walaupun arahan berfungsi dengan betul apabila dijalankan terus melalui klien SSH.
Sebab Kemungkinan:
-
Peruntukan Pseudo-terminal: Saluran "exec" dalam JSch tidak memperuntukkan pseudo-terminal (PTY) secara lalai, yang membawa kepada persediaan persekitaran yang berbeza dan skrip shell yang berpotensi hilang.
-
Pengubahsuaian PATH: Pembolehubah persekitaran PATH mungkin ditetapkan secara berbeza untuk sesi interaktif dan bukan interaktif, menyebabkan boleh laku menjadi tidak tersedia.
Penyelesaian:
Disyorkan:
-
Perintah Laluan Penuh: Gunakan laluan penuh ke boleh laku dalam arahan, cth., /bin/air sandbox run .
-
Pelarasan Skrip Permulaan: Ubah suai skrip permulaan untuk memastikan tetapan PATH yang konsisten untuk kedua-dua sesi interaktif dan bukan interaktif.
Alternatif Pendekatan:
-
Invokasi Shell Log Masuk: Jalankan arahan secara eksplisit melalui shell log masuk menggunakan suis --login.
-
Pengubahsuaian Persekitaran : Tetapkan pembolehubah persekitaran yang diperlukan dalam arahan itu sendiri, cth., PATH="$PATH;/path/to/air" && air sandbox run .
-
PTY Enablement (Tidak Disyorkan): Walaupun boleh, memaksa peruntukan PTY untuk saluran "exec" mungkin memperkenalkan sisi kesan.
Berkaitan Isu:
- [Arahan Unix tertentu gagal dengan "... tidak dijumpai", walaupun dengan setPty didayakan](https://stackoverflow.com/questions/34846613/certain-unix-commands-fail-with-not-found-when-executed-through-java-using-jsch-ev)
- [ Perintah yang dilaksanakan dengan SSH.NET SshClient.RunCommand gagal dengan "Tiada fail atau direktori"]https://stackoverflow.com/questions/19774736/command-4gl-executed-with-ssh-net-sshclient-runcommand-fails-with-no-such-file-o)
Atas ialah kandungan terperinci Mengapa Perintah Pengguna JSch Gagal dengan "Tidak Ditemui" Apabila Dilaksanakan melalui Java?. 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