Comment résoudre l'erreur « Command Not Found » dans exec_command de Paramiko pour les commandes Unix ?

Patricia Arquette
Libérer: 2024-10-21 07:00:03
original
447 Les gens l'ont consulté

How to Resolve

Les commandes Unix échouent avec l'erreur "Command Not Found" lors de l'utilisation de exec_command de Paramiko

Dans les scénarios où les commandes Unix comme "sesu" échouent avec " command not found" lorsqu'elle est exécutée via Paramiko exec_command de Python, la cause première peut résider dans le comportement par défaut de SSHClient.exec_command.

Comprendre le comportement par défaut

SSHClient. exec_command ne fonctionne généralement pas en mode « connexion » et n'alloue pas de pseudo-terminaux pour les sessions. Par conséquent, il peut contourner certains scripts de démarrage invoqués lors de sessions SSH interactives. Cet écart peut entraîner des variables d'environnement et des branchements de script différents des sessions interactives classiques.

Résoudre le problème

Pour résoudre ce problème, envisagez les solutions suivantes :

  1. Spécifiez le chemin complet de la commande : Au lieu de vous fier à PATH, utilisez le chemin complet de la commande, par exemple "/bin/sesu test."
  2. Modifier les scripts de démarrage : Assurez-vous que les scripts de démarrage définissent le PATH de manière cohérente pour les sessions interactives et non interactives.
  3. Exécutez la commande via le shell de connexion : Utilisez le "- -login" pour exécuter explicitement la commande via un shell de connexion, par exemple, "bash --login -c "sesu test"."
  4. Modifier l'environnement de commande : Modifier l'environnement dans la commande elle-même, garantissant que les variables essentielles sont définies correctement.
  5. Forcer l'allocation du pseudo-terminal (non recommandé) : Définissez le paramètre "get_pty" sur True pour allouer un pseudo-terminal pour le canal d'exécution . Cependant, cette méthode peut avoir des conséquences inattendues.

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!

source:php
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!