salut

j'essaye d'executer une commande ssh en utilisant la lib paramiko
j'ai vu cet exemple sur le web

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
remote = paramiko.SSHClient()
remote.set_missing_host_key_policy(paramiko.AutoAddPolicy())
remote.connect("host", username="uname", password="pwd")
 
# myScript produces continuous output, that I want to capture as it appears    
stdin, stdout, stderr = remote.exec_command("python myScript.py")
stdin.close()
ça parait super simple, sauf que dans mon cas je ne peux pas me connecter par password mais uniquement par clef ssh et là c'est la galere

j'ai essayé de prendre exemple sur un bout de code à moi qui marche pour faire du scp avec paramiko et là ça fonctionne :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
 try :
                                user = 0
                                transport.connect(username = username, pkey = ma_clef)
                                transport.set_keepalive(10)
                                sftposadmin = paramiko.SFTPClient.from_transport(transport)
                                root=0
                        except paramiko.ssh_exception , e :
                                root=1
                                continue
bien evidement l'implementation ssh et scp n'est pas la même et je ne peux pas utiliser de command exec_command avec la notion de transport

Dans la doc paramiko du SSHClient normallement on peut passer un clef au lieu d'un mot de passe

http://docs.paramiko.org/en/2.1/api/client.html

En codant ça :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
 ssh=paramiko.SSHClient()
           ssh.connect(ma_liste[0], username= root, pkey = ma_clef)
           command="dpkg-query -l >/tmp/package_list.lst"
           ssh.exec_command(command)
j'obtiens cette erreur :

je precise que ma_clef est valorisée et c'est la même qui fonctionne avec le code SCP, et ma_liste[0] est mon serveur cible.

Traceback (most recent call last):
File "./analyse_conf.py", line 118, in <module>
ssh.connect(ma_liste[0], username= root, pkey = ma_clef)
File "/usr/local/lib/python2.7/dist-packages/paramiko/client.py", line 348, in connect
server_key)
File "/usr/local/lib/python2.7/dist-packages/paramiko/client.py", line 635, in missing_host_key
raise SSHException('Server %r not found in known_hosts' % hostname)
paramiko.ssh_exception.SSHException: Server mon_serveur_cible not found in known_hosts


any help ?