Ejecución de scripts usando más usuarios
Pregunta
Estoy escribiendo un script bash que requiere una gran cantidad de otros scripts.
Varias secuencias de comandos deben ser ejecutados como usuario_1 pero varios más como usuario _2.
Los guiones deben ser llamados en una secuencia estricta. Comienzo mi script como usuario_1 y su uso muchas veces para convertirse en usuario _2. Estos tiempos Do requiere una contraseña, así que tengo que volver a escribir muchas veces.
Me gustaría evitar eso, pero no tiene su parámetro de contraseña.
Sudo y esperar que no están instalados.
Solución 4
He resuelto el problema usando ssh. He generado la clave de autenticación para usuario_1 y publicado a usuario2. La contraseña no se necesita más.
ssh -l user_1 hostname "command_1; command_2"
Otros consejos
-
Hacer un tenedor (con '&') para usuario_1 y de usuario _2. Deben comunicarse (similar al cliente Desatascos) usando 'archivo de bloqueo' (semáforos). Por ejemplo usuario_1 hacer algo y la comprobación de usuario _2 es ??'archivo de bloqueo' existen en tiempo ... el sueño bucle
-
Tal vez eso es estúpido, pero se puede usar llaves finales
ssh user@localhost
Si le sucede que tiene zsh, creo que se puede hacer esto fácilmente - algo como:
#!/bin/zsh
coproc user1_script
su user2
do_stuff
echo "your_turn" >&p
read MY_TURN
do_more_stuff
echo "your_turn" >&p
read MY_TURN
...
user1_script:
#!/bin/zsh
read MY_TURN
do_stuff
echo your_turn
read MY_TURN
do_more_stuff
...
Si está atrapado y tiene zsh, que de todos modos vale la pena intentarlo.
Se puede ejecutar como root. Suena arriesgado? No si usted es cuidadoso y delante de cada comando su y agrega el nombre de usuario, así:
su -c 'script1' USER_1 && su -c 'SCRIPT2' usuario _2
Esto (suponiendo que se inicia como root) cambiar al usuario antes de ejecutar usuario_1 script1 luego de vuelta a la raíz y luego cambie de usuario _2 para funcionar SCRIPT2 .. todo sin pedir varias contraseñas.