Rumah > Java > javaTutorial > Mengapa Perintah Pengguna JSch Gagal dengan 'Tidak Ditemui' Apabila Dilaksanakan melalui Java?

Mengapa Perintah Pengguna JSch Gagal dengan 'Tidak Ditemui' Apabila Dilaksanakan melalui Java?

Susan Sarandon
Lepaskan: 2024-11-13 14:21:02
asal
911 orang telah melayarinya

Why do JSch User Commands Fail with

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:

  1. Perintah Laluan Penuh: Gunakan laluan penuh ke boleh laku dalam arahan, cth., /bin/air sandbox run .
  2. Pelarasan Skrip Permulaan: Ubah suai skrip permulaan untuk memastikan tetapan PATH yang konsisten untuk kedua-dua sesi interaktif dan bukan interaktif.

Alternatif Pendekatan:

  1. Invokasi Shell Log Masuk: Jalankan arahan secara eksplisit melalui shell log masuk menggunakan suis --login.
  2. 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 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