SSH Paramiko - How to execute a ssh command on a server
salut
j'essaye d'executer une commande ssh en utilisant la lib paramiko
j'ai vu cet exemple sur le web
Code:
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:
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:
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 ?