Soy bastante nuevo en Python y la programación. Intento copiar un archivo entre dos computadoras a través de un script de python. Sin embargo, el códigoArchivo de copia segura del servidor remoto a través del módulo scp y os en Python
os.system("ssh " + hostname + " scp " + filepath + " " + user + "@" + localhost + ":" cwd)
no funcionará. Creo que necesita una contraseña, como se describe en How to copy a file to a remote server in Python using SCP or SSH?. No recibí ningún registro de errores, el archivo simplemente no se mostrará en mi directorio de trabajo actual.
Sin embargo, cualquier otro comando con os.system("ssh " + hostname + "command")
o os.popen("ssh " + hostname + "command")
funciona. ->command = e.g. ls
Cuando intento ssh hostname scp file [email protected]:directory
en la línea de comandos funciona sin introducir una contraseña.
me trató de combinar os.popen
comandos con getpass y pxssh módulo para establecer una conexión ssh al servidor remoto y utilizarlo para enviar comandos directamente (sólo probé por un comando fácil):
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
Pero No puedo enviar comandos al servidor remoto (muestra print test
, ese nombre de host = local y no el servidor remoto), pero estoy seguro de que la conexión está establecida. Pensé que sería más fácil establecer una conexión que usar siempre "ssh " + hostname
en los comandos bash. También probé algunas de las soluciones en How to copy a file to a remote server in Python using SCP or SSH?, pero debo admitir que debido a la falta de experiencia no conseguí que trabajaran.
Muchas gracias por ayudarme.
¿Por qué te ¿Crees que tienes que hacer 'ssh hostname scp'? ¿Por qué no simplemente 'scp user @ hostname: file localdirectory'? –
Prefiere el módulo 'subprocess' sobre' os.system() 'por razones de seguridad. – glglgl
No he pensado en la posibilidad de copiar a través de 'scp user @ hostname: file localdirectory'. Funciona, pero solo cuando cancelo la parte 'user @'. – user1063572