46 votes

Comment exécuter plusieurs commandes en une seule session dans Paramiko ? (Python)

<pre><code></code><p>Lors de l’exécution d’une commande dans paramiko, il réinitialise toujours la session lorsque vous exécutez exec_command. Je veux pouvoir exécuter sudo ou su tout en conservant ces privilèges lorsque j’exécute un autre exec_command. Un autre exemple serait d’essayer de exec_command(« cd / »), puis d’exécuter à nouveau exec_command et de le faire dans le répertoire racine. Je sais que vous pouvez faire quelque chose comme exec_command(« cd /; ls -l »), mais je dois le faire dans des appels de fonction séparés.</p></pre>

43voto

Mike Pennington Points 16712

Cas d’utilisation non interactifs

Ceci est un exemple non interactif... il envoie , puis `` .

Cas d’utilisation interactifs
Si vous avez un cas d’utilisation interactif, cette réponse n’aidera pas... Personnellement, j’utiliserais ou pour des sessions interactives.

20voto

Sandeep Points 301

Essayez de créer une chaîne de commande séparée par un caractère. Cela a fonctionné pour moi. Pour. p. ex.

3voto

Nagabhushan S N Points 630

Vous pouvez le faire en appelant shell sur le client et en envoyant des commandes. S’il vous plaît se référer ici
La page contient du code pour python 3.5. J’ai modifié un peu le code pour fonctionner pour pythin 2.7. Ajout de code ici pour référence

2voto

user2661518 Points 957
cmd = 'ls /home/dir'
self.ssh_stdin, self.ssh_stdout, self.ssh_stderr = self.ssh.exec_command(cmd)
print self.ssh_stdout.read()
cmd2 = 'cat /home/dir/test.log'
self.ssh_stdin2, self.ssh_stdout2, self.ssh_stderr2 = self.ssh.exec_command(cmd2)
print self.ssh_stdout2.read()

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X