2009-11-25 2 views
4
import paramiko 

client = paramiko.SSHClient() 
client.load_system_host_keys() 
ip = '192.168.100.6' 
client.connect(ip, username='root', password='mima') 
i, o, e = client.exec_command('apt-get install sl -y --force-yes') 
print o.read(), e.read() 
client.close() 

i utilisé cet exemple .. il fonctionne très bien, mais je veux après la connexion server1 pour se connecter server2 je veux dire ssh imbriqué.problème Python SSH paramiko - ssh à l'intérieur de la session ssh

Répondre

4

Vous ne pouvez pas appeler la commande ssh depuis l'intérieur de votre client.exec_command?
comme:

client.exec_command('ssh [email protected] "apt-get install sl -y --force-yes"') 
+0

je veux voir 'Freem -m' mais comment donner un mot de passe dans ur requête client.exec_command ('user @ ssh host2 je veux envoyer le mot de passe ici aussi « apt-get install sl -y --force-yes "') comment? – rajaneesh

+1

je ferais la partie d'autorisation avec des clefs (public que vous jetez sur le serveur de destination, dans .ssh/authorized_keys, privé que vous gardez sur la machine que vous ssh de). Il est préférable et plus sûr, puis garder les mots de passe dans votre source – kender

+0

importation paramiko client = paramiko.SSHClient() client.load_system_host_keys() ip = 'numéro IP' de client.connect (ip, nom d'utilisateur = 'nom d'utilisateur', mot de passe = 'mot de passe') i, o, e = client.exec_command ("ssh utilisateur @ hôte2 sudo netstat -antp | grep 'CLOSE_WAIT' |") imprimer o.read(), e.read() client.close() mais ici problème est-il wating pour le mot de passe .. je suis nouveau pour python .. s'il vous plaît dites-moi comment envoyer un mot de passe ou .ssh/authorized_keys avec ce – rajaneesh

0

Vous exécutez la commande "ssh" dans le client, et non apt-get.

Vous ne pouvez pas vraiment démarrer une session paramiko sur le client tant que votre programme python n'est pas là. Le logiciel que vous commencez à utiliser ssh doit vivre sur cette machine.

Peut-être d'abord scp une copie de votre logiciel, et commencer cela en utilisant un paramètre comme -recursive_lvl = 1?