Come posso catturare l'output di comandi remoti poi emettere comandi più remote?
-
20-09-2019 - |
Domanda
Sono in esecuzione di uno script in cui si effettua il login a un server poi esegue il comando "Passwd -n 0 -x 99999 -i -1 debug" per rimuovere invecchiamento dell'utente debug. Se l'utente di debug non è presente allora voglio creare il debug di utente, modificare la password, e poi eseguire il comando di cui sopra per l'invecchiamento.
Come posso fare?
Saluti, Vasistha
Soluzione
Da perlfunc(1)
:
system LIST [...] The return value is the exit status of the program as returned by the "wait" call. To get the actual exit value, shift right by eight (see below).
Quindi:
my $ret = system(qw/passwd -n 0 -x 99999 -i -1 debug/);
if ($ret != 0) {
# failure handling code here
}
Altri suggerimenti
Se proprio insistete a farlo manualmente, utilizzare getent passwd debug
per controllare se esiste l'utente:
if [ $(getent passwd debug | wc -l ) = 0 ]; then
adduser debug
fi
Io suggerisco di usare qualcosa di simile a Aspettatevi . Gestisce l'interattività per voi. È possibile accedere al server, eseguire comandi, ispezionare l'uscita, inviare più input, e così via. Se stai facendo un sacco di amministrazione remota del server, è uno strumento molto utile sapere. C'è anche un articolo su di esso in La Rassegna Perl Edizione 4.2 (primavera 2008)