¿Cómo pasar la contraseña a su/sudo/ssh sin anular el TTY?
Estoy escribiendo un programa C Shell que hará su
o sudo
o ssh
. Todos quieren sus contraseñas en la entrada de la consola (el TTY) en lugar de en la entrada estándar o en la línea de comando.
¿Alguien sabe una solución?
Configurar sin contraseña sudo
no es una opción.
esperarPodría ser una opción, pero no está presente en mi sistema simplificado.
Para sudo hay una opción -S para aceptar la contraseña de la entrada estándar. Aquí está la entrada del hombre:
-S The -S (stdin) option causes sudo to read the password from
the standard input instead of the terminal device.
Esto le permitirá ejecutar un comando como:
echo myPassword | sudo -S ls /tmp
En cuanto a ssh, he hecho muchos intentos de automatizar/programar su uso sin éxito. No parece haber ninguna forma integrada de pasar la contraseña al comando sin que se le solicite. Como otros han mencionado, la utilidad " expect " parece estar dirigida a abordar este dilema pero, en última instancia, configurar la autorización de clave privada correcta es el camino correcto a seguir cuando se intenta automatizar esto.
Escribí algo de Applescript que solicita una contraseña a través de un cuadro de diálogo y luego crea un comando bash personalizado, como este:
echo <password> | sudo -S <command>
No estoy seguro si esto ayuda.
Sería bueno si sudo aceptara una contraseña previamente encriptada, para poder cifrarla dentro de mi secuencia de comandos y no preocuparme por hacer eco de contraseñas de texto sin cifrar. Sin embargo, esto funciona para mí y mi situación.
Para ssh
usted puede utilizar sshpass
: sshpass -p yourpassphrase ssh user@host
.
Solo necesitas descargar sshpass primero :)
$ apt-get install sshpass
$ sshpass -p 'password' ssh username@server
Para sudo también puedes hacer esto:
sudo -S <<< "password" command