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.

¿Fue útil?

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.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top