Copie sécurisée de Fichiers depuis le serveur distant par le scp et le module os en Python

Je suis assez nouveau à Python et à la programmation. Je suis en train de copier un fichier entre deux ordinateurs via un script python. Toutefois, le code

os.system("ssh " + hostname + " scp " + filepath + " " + user + "@" + localhost + ":" cwd)

ne fonctionne pas. Je pense qu'il a besoin d'un mot de passe, comme il est décrit dans Comment copier un fichier sur un serveur distant en Python à l'aide de SCP ou SSH?. Je n'ai pas tout les journaux d'erreur, le fichier ne s'affichent pas dans mon répertoire de travail courant.

Cependant, toutes les autres commandes avec os.system("ssh " + hostname + "command") ou os.popen("ssh " + hostname + "command") fonctionne. -> command = e.g. ls

Quand j'essaie
ssh hostname scp file user@local:directory
dans la ligne de commande, il fonctionne sans entrer un mot de passe.

J'ai essayé de combiner os.popen commandes avec getpass et pxssh module d'établir une connexion ssh vers le serveur distant et l'utiliser pour envoyer des commandes directement (j'ai testé uniquement pour une simple commande):

import pxssh
import getpass

ssh = pxssh.pxssh()
ssh.force_password = True
hostname = raw_input("Hostname: ")
user = raw_input("Username: ")
password = getpass.getpass("Password: ")
ssh.login(hostname, user, password)
test = os.popen("hostname")
print test

Mais je ne suis pas capable de mettre les commandes par l'intermédiaire du serveur à distance (print test montre, que le nom d'hôte = local et non pas le serveur distant), cependant, je suis sûr, la connexion est établie. J'ai pensé qu'il serait plus facile d'établir une connexion de toujours utiliser "ssh " + hostname dans les commandes bash. J'ai aussi essayé quelques solutions de contournement dans Comment copier un fichier sur un serveur distant en Python à l'aide de SCP ou SSH?, mais je dois admettre que, en raison du manque d'activité je n'ai pas les faire travailler.

Merci beaucoup de m'aider.

Pourquoi pensez-vous que vous devez faire ssh hostname scp? Pourquoi ne pas simplement scp user@hostname:file localdirectory?
Préférez la subprocess module sur os.system() pour des raisons de sécurité.
Je n'ai pas pensé à la possibilité de copier via scp user@hostname:file localdirectory. Il fonctionne, mais uniquement quand je annuler la user@ partie.
Je ne connaissais pas le subprocess module jusqu'à maintenant, mais je vais le prendre en considération (comme je l'ai dit je suis nouveau sur python et de l'apprentissage, j'ai besoin de quelques temps pour adopter)

OriginalL'auteur user1063572 | 2011-11-24