2009-07-29 3 views
0

Ich führe ein Skript aus, bei dem es sich bei einem Server anmeldet und dann den Befehl "passwd -n 0 -x 99999 -i -1 debug" ausführt, um das Altern des Debug-Benutzers zu entfernen. Wenn der Benutzer debug nicht vorhanden ist, dann möchte ich den Benutzer Debug erstellen, ändern Sie das Kennwort es und führen Sie dann den obigen Befehl für die Alterung.Wie kann ich die Ausgabe von Remote-Befehlen erfassen und dann weitere Remote-Befehle ausgeben?

Wie kann ich tun?

Grüße, Vasistha

Antwort

1

Von 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). 

Deshalb:

my $ret = system(qw/passwd -n 0 -x 99999 -i -1 debug/); 
if ($ret != 0) { 
    # failure handling code here 
} 
+1

Wie beantwortet das die Frage? system() führt etwas auf demselben Rechner aus. Es führt auf dem Remote-Server nichts aus. –

+0

Eh, jetzt, da ich die Frage noch einmal gelesen habe, weiß ich es auch nicht. Ich habe den entfernten Teil nicht bemerkt. Wäre es nicht schön zu glauben, dass das Perl-Skript auf den Server hochgeladen wurde? – hhaamu

0

Verwendung puppet.

Wenn Sie wirklich darauf bestehen, manuell auf dem zu tun, verwenden Sie getent passwd debug zu überprüfen, ob der Benutzer vorhanden ist:

if [ $(getent passwd debug | wc -l) = 0 ]; then 
    adduser debug 
fi 
0

Ich schlage vor, mit etwas wie Expect. Es behandelt die Interaktivität für Sie. Sie können sich beim Server anmelden, Befehle ausführen, die Ausgabe überprüfen, mehr Eingaben senden und so weiter. Wenn Sie viele Remote-Server-Verwaltung tun, ist es ein sehr nützliches Werkzeug zu wissen. Es gibt sogar einen Artikel darüber in The Perl Review Ausgabe 4.2 (Frühjahr 2008)

Verwandte Themen