Regole del forum
1) Citare in modo preciso il linguaggio di programmazione usato.
2) Se possibile portare un esempio del risultato atteso.
3) Leggere attentamente le risposte ricevute.
4) Scrivere i messaggi con il colore di default, evitare altri colori.
5) Scrivere in Italiano o in Inglese, se possibile grammaticalmente corretto, evitate stili di scrittura poco chiari, quindi nessuna abbreviazione tipo telegramma o scrittura stile SMS o CHAT.
6) Appena registrati è consigliato presentarsi nel forum dedicato.
La non osservanza delle regole porta a provvedimenti di vari tipo da parte dello staff, in particolare la non osservanza della regola 5 porta alla cancellazione del post e alla segnalazione dell'utente. In caso di recidività l'utente rischia il ban temporaneo.
Alla fine dell'esecuzione dello script vorrei anche fare in modo che il controllo ritorni al prmo utente con il quale mi sono loggato.
Mi spiego: da linea di comando risolvo in un attimo con
Ah ecco...avevo capito l'opposto. Ma c'è comunque il problema che se fai partire lo script con un su - tutto ciò che c'è dopo non si vede o lo fai partire da root o non saprei...
La prosecuzione della compilazione avviene con un altro script lanciato dall'utente root. Comunque rimane il problema che lo script precedente non termina.
Mi spiego meglio. Ho enne script che vengono lanciati da un'altro script. Una parte devono essere eseguiti dall'utente pippo, che poi non serve più, e la seconda parte dall'utente root.
Rimane comunque appeso l'ultimo script (che passa il controllo a root)
Aspetta che forse ho una soluzione, ma prima devo chiarire un'ultima cosa. Per appeso intendi quello che ti dissi prima a proposito del passaggio a root? (non si vede l'output).
Perchè se così fosse potresti mettere l'exec dei vari script in su -c
Mi loggo al sistema come flavio, poi lancio un su (e divento root), successivamente rilancio su per l'utente pippo e poi ridivento root con il suggerimento che mi hai passato. Mi sembrava molto macchinoso comunque funziona.
Vedo tranquillamente l'output.
Tieni da conto che non sono espertissimo in bash scripting.
Non so cosa voglia dire "mettere l'exec dei vari script in su -c".
L'opzione '-c' del comando 'su' ti permette di eseguire solo un comando come un utente diverso. Questo dovrebbe essere proprio quello che cerchi tu. Ad esempio (#=root):
#> ls ~
file_di_root
#> su spina -c 'ls ~'; ls ~
file_di_spina
file_di_root
Come vedi, il primo comando ('ls ~') viene eseguito nella home directory dell'utente root, che contiene il solo file 'file_di_root'. Il secondo comando esegue 'ls ~' come utente 'spina' e subito dopo di nuovo il comando 'ls ~' come utente root, quindi fa un 'ls' sia nella home directory di spina (file_di_spina) che nella home di root (file_di_root).
Morale della favola, se vuoi eseguire solo un insieme di comandi come un determinato utente e non vuoi 'diventare' quell'utente, il parametro '-c' del comando 'su' è quello che fa per te. Per maggiori info: