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
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"
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
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.
Bash 4 y ksh también tienen coprocesos. –
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.
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. –
¿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
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. –
- 1. Ejecutando scripts dentro de C#
- 2. Ejecutando scripts PHP concurrentes
- 3. Ejecutando scripts en HtmlAgilityPack
- 4. Ejecutando múltiples scripts/sesiones R
- 5. Ejecutando R Scripts con Gráficos
- 6. Ejecutando scripts de Python como PHP
- 7. ejecutando scripts a través de processbuilder
- 8. Código python más seguro ejecutando
- 9. ¿Cómo interactúa Perl con los scripts que está ejecutando?
- 10. Jenkins: Ejecutando scripts de prueba remotos y reportando resultados
- 11. ¿Cómo obtener una lista de ejecutando scripts de PHP usando PHP exec()?
- 12. Ejecutando múltiples comandos usando Popen.stdin
- 13. Recuento de scripts de bash simple ejecutando procesos por nombre
- 14. Ejecutando bash strings usando scala.sys.process
- 15. ejecutando bytecode jython usando java
- 16. Calcular los usuarios más cercanos MySQL
- 17. ejecutando una función en sql más
- 18. ¿Múltiples proyectos usando múltiples scripts setup.py?
- 19. Usando if elif fi en shell scripts
- 20. Ejecutando comandos a través de scripts PHP/Perl como usuario privilegiado en Linux
- 21. Scripts Elevate Powershell
- 22. Ejecutando archivos en un directorio de forma recursiva usando ruby
- 23. Obtener lista de usuarios LDAP usando PLSQL
- 24. Ejecutando un script de Python usando Cron?
- 25. ejecutando funciones anónimas creadas usando JavaScript eval()
- 26. Ejecutando una plantilla T4 usando C#
- 27. Ejecutando diferentes consultas usando mysql-python
- 28. Hospedaje de scripts .fsx dentro de aplicaciones más grandes
- 29. ejecutando r scripts o comandos con intérprete en Unix para unix-layman
- 30. permitir scripts para leer un archivo, pero impiden que los usuarios puedan ver el archivo directamente
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. –