Éliminer les valeurs indésirables de la sortie SSH à l'aide de Paramiko
Lors de la récupération de la sortie de la CLI d'une machine distante via la bibliothèque SSH de Paramiko, on peut rencontrer des caractères non sollicités tels que "x1b[2Jx1b[1;1H" et "u". Ce sont des codes d'échappement ANSI qui embellissent la sortie pour les clients du terminal.
Cause et résolution
SSHClient.invoke_shell de Paramiko demande un pseudo-terminal, ce qui entraîne l'apparition de ces codes d'échappement. codes. Pour l'exécution automatisée des commandes, il est recommandé d'utiliser plutôt SSHClient.exec_command, qui n'attribue pas le pseudo-terminal par défaut.
<code class="python">stdin, stdout, stderr = client.exec_command('ls')</code>
Solutions alternatives
Si vous utilisez le Le canal "shell" est impératif, il est possible de le faire sans le pseudo-terminal, mais SSHClient.invoke_shell de Paramiko n'offre pas cette fonctionnalité. On peut créer manuellement le canal "shell" à la place.
<code class="python"># Not supported by Paramiko SSHClient.invoke_shell channel = ssh_client.get_transport().open_channel("session") channel.exec_command("ls")</code>
Remarque sur le codage Unicode
Le préfixe "u" dans les chaînes de sortie indique le codage Unicode, qui devrait être préservé.
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!