2010-09-07 33 views
2

Je veux exécuter et contrôler PSFTP à partir d'un script Python afin d'obtenir les fichiers journaux d'une boîte UNIX sur mon ordinateur Windows. Je peux démarrer PSFTP et me connecter mais quand j'essaie d'exécuter une commande à distance comme 'cd', elle n'est pas reconnue par PSFTP et est simplement exécutée dans le terminal quand je ferme PSFTP.Puis-je contrôler PSFTP à partir d'un script Python?

Le code que je suis en train de courir est la suivante:

import os 

os.system("<directory> -l <username> -pw <password>") 
os.system("cd <anotherDirectory>") 

Je me demandais si cela est réellement possible. Ou s'il y a une meilleure façon de le faire en Python.

Merci.

Répondre

2

Vous devrez exécuter PSFTP en tant que sous-processus et parler directement avec le processus. os.system génère un sous-shell distinct chaque fois qu'il est invoqué, de sorte qu'il ne fonctionne pas comme si vous tapiez des commandes de manière séquentielle dans une fenêtre d'invite de commande. Jetez un oeil à la documentation du module standard Python subprocess. Vous devriez être capable d'accomplir votre objectif à partir de là. Alternativement, il existe quelques paquets Python SSH tels que paramiko et Twisted. Si vous êtes déjà heureux avec PSFTP, je serais définitivement d'essayer de le faire fonctionner en premier.

soupçon module Subprocess:

# The following line spawns the psftp process and binds its standard input 
# to p.stdin and its standard output to p.stdout 
p = subprocess.Popen('psftp -l testuser -pw testpass'.split(), 
        stdin=subprocess.PIPE, stdout=subprocess.PIPE) 
# Send the 'cd some_directory' command to the process as if a user were 
# typing it at the command line 
p.stdin.write('cd some_directory\n') 
+0

J'ai jeté un coup d'oeil sur le sous-processus et je peux faire fonctionner PSFTP mais je n'arrive toujours pas à savoir comment m'envoyer des commandes? Des idées?? – matt2010

+0

Edité pour fournir l'exemple de module de sous-processus – Rakis