À l'aide de Plink (PuTTy) pour SSH via Python

Je suis en train d'écrire un script python qui va SSH à un serveur et d'exécuter une commande. Je suis à l'aide de la version 2.6 de Python sur Windows, et que vous avez installé plink et paegent (pour les clés ssh) et ajouté tous sur mon chemin.

Si je vais à l'invite de commande et tapez:

plink username@host -i key.ppk
open vnc://www.example.com/

Je vois le comportement désiré-- un VNC viewer s'ouvre sur mon Mac (serveur).

Cependant, si j'ai essayé deux approches pour ce faire par programme à l'aide de Python et de ne pas travailler:

Approche 1 (os):

import os
ff=os.popen("plink user@host -i key.ppk",'w')
print >>ff, r"open vnc://www.example.com"
ff.flush() 

Approche 2 (sous-processus):

import subprocess
ff=subprocess.Popen("plink user@host -i key.ppk",shell=False,stdin=subprocess.PIPE)
ff.stdin.write(r"open vnc://www.example.com")
ff.stdin.flush()

Ni produit une erreur, mais ni ouvre la fenêtre VNC. Cependant, je crois qu'ils ont tous les deux réussi à se connecter à l'hôte distant.

Ce que je fais mal?

Pas une réponse, mais pourquoi s'embêter à l'aide de plink et putty quand vous pourriez utiliser paramiko ou éventuellement tissu?
je suis déjà à l'aide de Popen pour ouvrir le serveur VNC sur windows, il m'est apparu premier. je n'ai pas entendu de paramiko ou en tissu, mais je vais essayer, merci!
puisque vous voulez exécuter des commandes via SSH, le Tissu est certainement ce que vous voulez. C'est vraiment sympa pour l'automatisation parce que vous pouvez obtenir le stdout du serveur distant, l'exécution des commandes, l'utilisation sudo, etc. Paramiko est un SSH-bibliothèque d'encapsulation et le Tissu est construite au-dessus d'elle.

OriginalL'auteur Jeff | 2011-11-09