2012-08-23 17 views
5

Ho uno script in cui sto controllando meticolosamente i codici di ritorno per le condizioni di errore, in modo da poter interrompere anticipatamente in caso di errore. Un passo di questo script prevede l'esecuzione di un comando come root su un'altra casella, tramite ssh e sudo.Catturare il codice di uscita dal processo sudo

considerare:

ssh $HOST sudo $CMD 
echo $? 

ssh passa codici di ritorno di nuovo bene, ma anche se $ CMD restituisce un codice di uscita diverso da zero, sudo restituisce comunque 0 dopo l'esecuzione del comando.

Come si acquisisce il codice di ritorno su $ CMD? Sono molto parziale al suo ritorno come codice di ritorno di ssh, ma se c'è un altro metodo semplice che non può essere confuso dall'output di $ CMD, sono tutto orecchie.

risposta

4

Come risulta, sudo è che passa correttamente il codice di ritorno. Il mio test case molto probabilmente stava sovrascrivendo $? con una successiva esecuzione o test condizionale. Di solito uso una variabile denominata per conservare $? per evitare cose del genere, ma ci sei.

+0

Lo stesso qui - stavo echeggiando il risultato, quindi anche se ssh stava passando correttamente il codice di stato, echo restituiva 0. –

Problemi correlati