Quelle est la manière la plus pythonique de scp un fichier en Python? La seule voie que je connaisse est
os.system('scp "%s" "%s:%s"' % (localfile, remotehost, remotefile) )
qui est un hack, et qui ne fonctionne pas en dehors des systèmes de type Linux, et qui a besoin de l'aide du module Pexpect pour éviter les invites de mot de passe à moins que vous n'ayez déjà configuré SSH sans mot de passe sur l'hôte distant.
Je connais Twisted conch
, mais je préférerais éviter d'implémenter scp moi-même via des modules ssh de bas niveau.
Je suis au courant d' paramiko
un module Python qui prend en charge SSH et SFTP; mais il ne prend pas en charge SCP.
Contexte: je me connecte à un routeur qui ne prend pas en charge SFTP mais qui prend en charge SSH / SCP, donc SFTP n'est pas une option.
EDIT : Ceci est un double de Comment copier un fichier sur un serveur distant en Python en utilisant SCP ou SSH? . Cependant , cette question ne donne pas de réponse spécifique à scp qui traite des clés de Python. J'espère un moyen d'exécuter du code un peu comme
import scp
client = scp.Client(host=host, user=user, keyfile=keyfile)
# or
client = scp.Client(host=host, user=user)
client.use_system_keys()
# or
client = scp.Client(host=host, user=user, password=password)
# and then
client.transfer('/etc/local/filename', '/etc/remote/filename')
scp
finit par appeler lascp
ligne de commande qui ne fonctionne que sur * nix.