¿Cuál es la forma más pitónica de scp un archivo en Python? La única ruta que conozco es
os.system('scp "%s" "%s:%s"' % (localfile, remotehost, remotefile) )
que es un truco, y que no funciona fuera de los sistemas similares a Linux, y que necesita ayuda del módulo Pexpect para evitar solicitudes de contraseña a menos que ya tenga una SSH sin contraseña configurada en el host remoto.
Soy consciente de Twisted conch
, pero preferiría evitar implementar SCP a través de módulos ssh de bajo nivel.
Soy consciente de paramiko
un módulo de Python que admite SSH y SFTP; pero no es compatible con SCP.
Antecedentes: me estoy conectando a un enrutador que no admite SFTP pero sí admite SSH / SCP, por lo que SFTP no es una opción.
EDITAR : ¿Este es un duplicado de Cómo copiar un archivo a un servidor remoto en Python usando SCP o SSH? . Sin embargo , esa pregunta no da una respuesta específica de scp que se ocupe de claves desde Python. Espero una forma de ejecutar código como
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
termina llamando a lascp
línea de comando que solo funciona en * nix.