Esecuzione script che utilizzano più utenti
Domanda
Sto scrivendo uno script bash che chiama un sacco di altri script.
Diversi gli script devono essere eseguiti come user_1 ma quelli diversi come utente_2.
Gli script dovrebbero essere chiamati in stretta sequenza. Inizio il mio script come user_1 e usare su molte volte di diventare utente_2. Questi tempi Su richiede una password quindi devo riscrivere molte volte.
Mi piacerebbe evitarlo, ma do non ha alcun parametro della password.
sudo e si aspettano non sono installati.
Soluzione 4
Ho risolto il problema usando ssh. Ho generato la chiave di autenticazione per user_1 e pubblicato a user2. La password non è più necessario.
ssh -l user_1 hostname "command_1; command_2"
Altri suggerimenti
-
Fare una forchetta (con '&') per utente_1 e per utente_2. Essi dovrebbero comunicare (simile come client-serwer) utilizzando 'file di blocco' (semaforo). Per esempio user_1 fare qualcosa e controllo utente_2 è 'file di blocco' esistono in mentre ... sonno del ciclo
-
Forse è stupido, ma è possibile utilizzare i tasti di fascia
ssh user@localhost
Se vi capita di avere zsh, penso che si può fare facilmente - qualcosa come:
#!/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
...
Se sei bloccato, e hanno zsh, vale la pena di provare comunque.
Si potrebbe correre come root. Suona rischioso? No, se si è attenti e precedere ogni comando con su e aggiungere il nome utente in questo modo:
su -c 'script1' user_1 && su -c 'SCRIPT2' utente_2
In questo modo (supponendo che si avvia come root) cambiare l'utente a user_1 prima di eseguire script1 poi di nuovo a radice poi cambiare utente_2 per eseguire SCRIPT2 .. tutto senza chiedere più password.