Me gustaría usar rsync dentro de un script de Python. Lo llamo usando el subprocess
módulo y autenticando usando claves públicas almacenadas en el authorized_key
archivo en la máquina remota.
El único problema es que cuando uso rsync con un nombre de usuario remoto incorrecto, se me solicita una contraseña, lo que obviamente detiene el script de copia de seguridad para siempre.
¿Puedo forzar la rsync
salida con error si no se puede autenticar, en lugar de solicitar una contraseña?
Udi
re: sugerencia de James (sin darle tty), para el subproceso, intente poner stdin = None como parámetro para Popen.
fuente
Primero haga que rsync funcione desde el shell, el comando debería verse así.
Si eso falla, depure el comando ssh por sí mismo. Cuando todo funcione, vea qué sucede con el script de Python
Este no es un mal tutorial
fuente
Dependiendo de cómo esté iniciando rsync, podría no ser útil darle un TTY o PTY.
Muchos programas verifican si tienen un TTY de control antes de decidir solicitar al usuario que ingrese. El comportamiento predeterminado de system () y llamadas similares es proporcionar un tty a los subprogramas, pero puede deshabilitarlo.
También es posible deshabilitar la autenticación de contraseña por completo en el lado remoto si tiene el control de ambos sistemas y desea alejarse de la autenticación de contraseña para obtener los beneficios de seguridad mientras resuelve este problema.
Si está haciendo rsync a través de SSH, puede agregar lo siguiente a su archivo ssh_config para el host en cuestión, o mediante el interruptor de línea de comando -o:
En una prueba rápida (de solo ssh, no rsync) que provocó que SSH saliera inmediatamente cuando mi clave pública no fue aceptada sin pedirme una contraseña.
fuente