Para sudo hay una opción -S para aceptar la contraseña de la entrada estándar. Aquí está la entrada man:
-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 preguntar. Como han mencionado otros, la utilidad "esperar" parece estar destinada 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í un 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 preencriptada, para poder encriptarla dentro de mi secuencia de comandos y no preocuparme por hacer eco de las contraseñas de texto claro. Sin embargo, esto funciona para mí y mi situación.
Para sudo también puedes hacer esto:
sudo -S <<< "password" command
Para ssh
puedes usar sshpass
:sshpass -p yourpassphrase ssh [email protected]
.
Solo necesita descargar sshpass primero :)
$ apt-get install sshpass
$ sshpass -p 'password' ssh [email protected]