Rumah  >  Artikel  >  Java  >  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
Susan Sarandonasal
2024-11-13 14:21:02779semak imbas

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:
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