Problem mit SSH exit status
Hallo alle zusammen,
ich habe ein Problem mit dem exit status von SSH.
Und zwar versuche ich mit Hilfe des folgenden Bash-Scripts auf verschiedenen Servern das Passwort eines bestimmten Users (testuser) zu ändern.
SERVERLIST, SERVER, LOGFILE und PASSWORD werden aus einer anderen Funktion übergeben..
Zuvor hab ich natürlich SSH-Keys verteilt, damit ich mich ohne erneute Passwortabfrage auf den Rechnern einloggen kann.
Das funktioniert an für sich auch ganz wunderbar, bis man in die Serverliste einen unbekannten Host einträgt.
Ich habe dafür übrigens root-Rechte..
Die Bildschirmausgabe sieht so aus:
testserver999 ist dabei der unbekannten Host.
Wie man sieht, ist der exit status 0, obwohl der ssh-Befehl nicht erfolgreich war und er geht nie in den if-Pfad mit dem ich ja eigentlich genau solche Fälle abfangen möchte..
Der Eintrag im Logfile sieht folgendermaßen aus:
Wie man sieht erscheint die Meldung "ssh: testserver999: Name or service not known" auch nicht im Logfile..
Wenn ich das manuell in der Shell eingebe, kommt wiederum das erhoffte Ergebnis:
So sollte es ja dann eigentlich auch im Script laufen..?!
Hab ich da irgendwo nen Fehler oder weiss sonst jemand Rat?
MfG
Kalle
ich habe ein Problem mit dem exit status von SSH.
Und zwar versuche ich mit Hilfe des folgenden Bash-Scripts auf verschiedenen Servern das Passwort eines bestimmten Users (testuser) zu ändern.
for SERVER in `cat $SERVERLIST`;
do
echo "Connect to Server: $SERVER" | tee -a $LOGFILE
# einloggen auf dem Server
ssh $SERVER "echo "$PASSWORD" | passwd testuser --stdin" | tee -a $LOGFILE
echo "echo $?" | tee -a $LOGFILE # testweise eingefügt
if [ $? != 0 ]
then # Fehlermeldung, wenn nicht erfolgreich
echo "!! ERROR !! Password not changed!" | tee -a $LOGFILE
fi
done
Zuvor hab ich natürlich SSH-Keys verteilt, damit ich mich ohne erneute Passwortabfrage auf den Rechnern einloggen kann.
Das funktioniert an für sich auch ganz wunderbar, bis man in die Serverliste einen unbekannten Host einträgt.
Ich habe dafür übrigens root-Rechte..
Die Bildschirmausgabe sieht so aus:
Connect to Server: testserver1
Changing password for testuser.
echo 0
Connect to Server: testserver2
Changing password for testuser.
echo 0
Connect to Server: testserver999
ssh: testserver999: Name or service not known
echo 0
testserver999 ist dabei der unbekannten Host.
Wie man sieht, ist der exit status 0, obwohl der ssh-Befehl nicht erfolgreich war und er geht nie in den if-Pfad mit dem ich ja eigentlich genau solche Fälle abfangen möchte..
Der Eintrag im Logfile sieht folgendermaßen aus:
Connect to Server: testserver1
Changing password for testuser.
echo 0
Connect to Server: testserver2
Changing password for testuser.
echo 0
Connect to Server: testserver999
echo 0
Wie man sieht erscheint die Meldung "ssh: testserver999: Name or service not known" auch nicht im Logfile..
Wenn ich das manuell in der Shell eingebe, kommt wiederum das erhoffte Ergebnis:
local_host: # ssh testserver999 "echo "xxxxxxxxx" | passwd testuser --stdin"
ssh: testserver999: Name or service not known
local_host: # echo $?
255
Hab ich da irgendwo nen Fehler oder weiss sonst jemand Rat?
MfG
Kalle
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 113477
Url: https://administrator.de/forum/problem-mit-ssh-exit-status-113477.html
Ausgedruckt am: 10.01.2025 um 21:01 Uhr
2 Kommentare
Neuester Kommentar
Weil in dem Skript hasst du exit status von tee und nicht von ssh