Erreur Unix CommandNotFound dans Paramiko Exec_command
Lors de l'exécution de certaines commandes Unix, telles que « sesu », via le module Paramiko exec_command de Python, vous pouvez rencontrez l'erreur "commande introuvable". Ce problème se pose car la méthode exec_command ne fonctionne généralement pas en mode « connexion », ce qui entraîne la création d'un ensemble différent de variables d'environnement et de scripts de démarrage par rapport à une session SSH interactive standard.
Solutions potentielles :
1. Spécifiez le chemin complet de la commande :
Utilisez le chemin complet de la commande dans votre argument exec_command. Par exemple, "/bin/sesu test" au lieu de "sesu test". Vous pouvez déterminer le chemin complet à l'aide de la commande « which » au sein d'une session SSH interactive.
2. Ajuster les scripts de démarrage :
Assurez-vous que les scripts de démarrage (par exemple, .bash_profile) définissent la variable d'environnement PATH de manière uniforme pour les sessions interactives et non interactives.
3. Utiliser le commutateur --login :
Exécutez la commande à l'aide d'un shell de connexion avec le commutateur "--login", tel que "bash --login -c "sesu test"."
4. Modifier les variables d'environnement dans la commande :
Modifiez les variables d'environnement directement dans la commande elle-même. Dans les systèmes Unix courants, la syntaxe suivante s'applique : "PATH="$PATH;/path/to/sesu" && sesu test."
5. Forcer l'allocation de pseudo-terminal (non recommandé) :
Activez l'allocation de pseudo-terminal pour le canal d'exécution à l'aide du paramètre get_pty=True. Cependant, cette approche peut conduire à des résultats inattendus.
Considérations supplémentaires :
Référez-vous aux ressources suivantes pour plus d'informations :
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!