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.

È stato utile?

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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top