2010-09-07 12 views
5

Estoy escribiendo un script bash que llama a muchos otros scripts.
Varios scripts se deben ejecutar como user_1 pero varios como user_2.
Los scripts deben llamarse en secuencia estricta. Comienzo mi script como user_1 y uso su muchas veces para convertirme en user_2. Estos tiempos su requieren una contraseña, así que tengo que volver a escribirlo muchas veces. Me gustaría evitar eso, pero su no tiene un parámetro de contraseña.
sudo y expect no están instalados.Ejecutando scripts usando más usuarios

Respuesta

0

He resuelto el problema con ssh. He generado la clave de autenticación para usuario_1 y publicado en user2. La contraseña ya no es necesaria.

ssh -l user_1 hostname "command_1; command_2" 
1
  • Hacer un tenedor (usando '&') para usuario_1 y de usuario _2. Deben comunicarse (similar a cliente-servidor) utilizando 'archivo de bloqueo' (semáforo). 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 esto es estúpido, pero se puede utilizar ssh [email protected] llaves finales

+0

Esa fue también mi primera idea y seguramente sería una gran solución. Me pareció demasiado arriesgado. Podría causar problemas en el futuro cuando el script se volviera más comlex. –

1

Si por casualidad tener zsh, creo que se puede hacer esto fácilmente - algo así 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á atascado y tiene zsh, vale la pena intentarlo de todos modos.

+1

Bash 4 y ksh también tienen coprocesos. –

1

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 USER_1 script1 '& & su -c usuario _2 '' SCRIPT2

Este será (suponiendo que se inicia como root) cambie el usuario a user_1 antes de ejecutar script1, luego vuelva a la raíz y luego cambie a user_2 para ejecutar script2 ... todo sin pedir múltiples contraseñas.

+0

Suena bien, pero mi script debe ejecutarse en un servidor de la compañía. La contraseña de root se conoce solo para el administrador del sistema. –

+0

¿Puede dar más detalles sobre por qué necesita los dos usuarios? Tienes las contraseñas para ambos ... ¿Podrías tal vez aislar los archivos de resultados al final? – Spaceghost

+0

Esta será una secuencia de comandos de instalación. Estamos utilizando 2 herramientas diferentes para nuestra aplicación. Ambas herramientas deben instalarse como usuarios especiales. Esta regla es requerida por el productor de herramientas. Los componentes de las herramientas están construidos el uno en el otro. Eso significa que tengo que instalar la primera herramienta que iniciar algunos componentes. Luego tengo que instalar la 2. herramienta, iniciar otros componentes desde la primera herramienta, hacer algunas otras operaciones. Este es el escenario aproximado. –

Cuestiones relacionadas