Pouvez-vous éliminer les sorties indésirables lorsque vous utilisez SSH pour récupérer la sortie CLI avec Paramiko de Python ?
Lorsque vous utilisez la bibliothèque Paramiko de Python pour vous connecter en SSH à un périphérique distant et récupérer la sortie du En ligne de commande, il est courant de rencontrer des caractères superflus à côté de la sortie prévue. Cela peut inclure des codes d'échappement ANSI et d'autres informations non essentielles.
Bien que ces caractères puissent sembler indésirables, ils servent en réalité à quelque chose. Les codes d'échappement ANSI sont utilisés par les clients terminaux pour améliorer la présentation des résultats, tels que le formatage du texte et le positionnement du curseur. Ils ne sont donc pas une nuisance mais plutôt un composant nécessaire des sessions de terminaux interactifs.
Lors de l'utilisation de la méthode SSHClient.invoke_shell de Paramiko, destinée aux sessions de terminaux interactifs, la bibliothèque demande automatiquement un pseudo terminal. Ce terminal est utilisé pour interpréter les codes d'échappement ANSI et afficher le résultat dans un format lisible par l'homme.
Cependant, si votre intention est d'automatiser l'exécution de commandes à distance plutôt que de vous engager dans des sessions de terminal interactives, le terminal approprié La méthode à utiliser est SSHClient.exec_command. Cette méthode n'attribue pas de pseudo-terminal par défaut, éliminant ainsi le problème des caractères superflus.
Alternativement, si vous avez besoin d'utiliser le canal "shell" en raison de contraintes spécifiques du serveur, vous pouvez créer manuellement le canal sans le pseudo terminal. Cependant, il est important de noter que SSHClient.invoke_shell de Paramiko ne prend pas en charge cette fonctionnalité, vous devrez donc créer le canal vous-même.
Enfin, le préfixe "u" que vous remarquerez peut-être dans la sortie n'est pas une partie de la valeur de chaîne elle-même. Cela indique plutôt que la chaîne est codée en Unicode, ce qui est essentiel pour gérer les caractères qui ne relèvent pas de la plage ASCII.
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!