Les commandes Unix échouent avec l'erreur « Introuvable » lorsqu'elles sont exécutées via JSch en Java
Lors de l'exécution de commandes Unix via Java à l'aide de JSch, certaines commandes peut échouer avec une erreur « introuvable ». Cela peut se produire en raison de divers facteurs liés aux variables d'environnement et aux scripts d'initialisation du shell.
Comprendre le problème :
Le canal "exec" dans JSch n'alloue généralement pas de pseudo-terminal (PTY), ce qui peut entraîner des différences dans les paramètres d'environnement par rapport à une session SSH interactive. Par conséquent, les variables d'environnement essentielles, telles que la variable PATH, peuvent ne pas être définies correctement pour que la commande s'exécute correctement.
Causes possibles :
- La variable d'environnement PATH est définie différemment pour les sessions interactives et non interactives, ce qui empêche la localisation de l'exécutable aérien.
- Les scripts de démarrage peuvent contiennent une logique différente en fonction de la disponibilité de la variable d'environnement TERM, qui n'est pas définie dans une session non interactive.
Options de solution :
- Spécifiez le chemin complet :
Utilisez le chemin complet vers l'exécutable air dans la commande pour éviter de dépendre de l'environnement PATH variable.
-
Corriger les scripts de démarrage :
Modifiez les scripts de démarrage pour vous assurer que le PATH est défini de la même manière pour les sessions interactives et non interactives.
-
Exécuter avec Login Shell :
Exécutez la commande à l'aide d'un shell de connexion, tel que bash --login, qui garantit un configuration appropriée de l'environnement.
-
Définir les variables d'environnement dans la commande :
Modifiez la commande pour définir explicitement la variable d'environnement PATH avant d'exécuter la commande aérienne.
-
Activer l'allocation PTY :
Forcer l'allocation d'un pseudo terminal à l'aide de la méthode .setPty dans le canal "exec". Cependant, cette approche n'est pas recommandée en raison d'effets secondaires potentiels.
Problèmes de dépannage similaires :
- Certaines commandes Unix échouent avec « introuvable » erreur même avec l'allocation PTY activée
- Les commandes exécutées à l'aide de JSch diffèrent par leur comportement par rapport à SSH terminal
- Exposition des variables d'environnement utilisateur au canal "exec"
- Échecs d'exécution de la commande avec "Aucun fichier ou répertoire de ce type" à l'aide de SSH.NET
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!