137001
21.08.2018, aktualisiert um 11:32:38 Uhr
1668
11
0
Bash - ssh liefert in bash-Script manchmal keinen Output
Moin moin,
kurz und knackig: folgendes Problem.
Ich habe mir ein Bash-Script, was vereinfacht folgendes tut:
nun liefert er mir ab und an einen Hostname und ab und an kommt diese Ausgabe ohne Hostname zurück, was mir sehr merkwürdig anmutet.
noch andere Informationen:
OS: SLES 11 SP4
User: root
das Script wird über die crontab ausgeführt
irgendwer ne Idee? ich probiere schon 2 Wochen rum und finde keine Lösung.
#Edit: Parameter im SSH-Kommando
kurz und knackig: folgendes Problem.
Ich habe mir ein Bash-Script, was vereinfacht folgendes tut:
#!/bin/bash
HOSTNAME=$(ssh SERVERNAME -o StrictHostKeyChecking=no 'hostname')
echo $HOSTNAME
exit 0
nun liefert er mir ab und an einen Hostname und ab und an kommt diese Ausgabe ohne Hostname zurück, was mir sehr merkwürdig anmutet.
noch andere Informationen:
OS: SLES 11 SP4
User: root
das Script wird über die crontab ausgeführt
irgendwer ne Idee? ich probiere schon 2 Wochen rum und finde keine Lösung.
#Edit: Parameter im SSH-Kommando
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 383987
Url: https://administrator.de/contentid/383987
Ausgedruckt am: 23.11.2024 um 08:11 Uhr
11 Kommentare
Neuester Kommentar
Guten Morgen,
dann kann vermutlich gelegentlich keine SSH Verbindung hergestellt werden.
Aktiviere bei SSH den Debugging Modus und lass die Debugging Ausgabe in eine Datei schreiben.
Viele Grüße,
Exception
dann kann vermutlich gelegentlich keine SSH Verbindung hergestellt werden.
Aktiviere bei SSH den Debugging Modus und lass die Debugging Ausgabe in eine Datei schreiben.
HOSTNAME=$(ssh -v SERVERNAME 'hostname') 2>/tmp/debug.txt
Viele Grüße,
Exception
Zitat von @129580:
HOSTNAME=$(ssh -v SERVERNAME 'hostname') 2>/tmp/debug.txt
Ich glaube das funktioniert so nicht, da dies eine Variablenzuweisung ist und dabei der Teil in den Klamern ausgeführt wird. Dabei müsste die Ausgabeumleitung ebenfalls in den Klammern stehen.
Vgl:
dev@001019:~$ HOSTNAME=$(ssh blah 'hostname') 2>/dev/null
ssh: Could not resolve hostname blah: Temporary failure in name resolution
dev@001019:~$ HOSTNAME=$(ssh blah 'hostname' 2>/dev/null)
dev@001019:~$
Korrekt müsste es also lauten:
HOSTNAME=$(ssh -v SERVERNAME 'hostname' 2>/tmp/debug.txt)
ABER:
Eigentlich ist das gar nicht nötig. Normalerweise loggt der Cron die fehlerhafte Ausführung eh ins syslog. Also schau doch mal in
/var/log/cron.log
oder /var/log/syslog
oder /var/log/messages
(je nachdem wie der syslog Daemon eingestellt ist)Viel Erfolg.
Hi,
@Evil2000
Hast Recht. Hab nicht aufgepasst. Lustigerweise funktioniert das trotzdem auf mein MacOS.
@137001
Kam der Effekt wieder? Und im Debug Log steht nichts außer den Fingerprint Warnungen?
Dann erhöhe mal das Debugging Level: -vvv
Viele Grüße,
Exception
@Evil2000
Hast Recht. Hab nicht aufgepasst. Lustigerweise funktioniert das trotzdem auf mein MacOS.
@137001
Kam der Effekt wieder? Und im Debug Log steht nichts außer den Fingerprint Warnungen?
Dann erhöhe mal das Debugging Level: -vvv
Viele Grüße,
Exception
Hallo,
dann hast du nicht das vollständige Log gepostet. Wenn er eine erfolgreiche Verbindung herstellen konnte, dann muss da deutlich mehr drinnen stehen. (Insbesondere in der Debugging Ausgabe). Mal auf einen der Gegenstellen im Log geprüft, ob es überhaupt ein Verbindungsversuch gab?
Wobei eigentlich gesagt sein muss, dass selbst wenn er keine SSH Verbindung herstellen kann z.B. durch Timeout, dass dieses im Log (Debugging Ausgabe) stehen muss. Ansonsten mal den Wireshark anschmeißen und schauen, was passiert, wenn du das Script manuell ausführst.
Viele Grüße,
Exception
dann hast du nicht das vollständige Log gepostet. Wenn er eine erfolgreiche Verbindung herstellen konnte, dann muss da deutlich mehr drinnen stehen. (Insbesondere in der Debugging Ausgabe). Mal auf einen der Gegenstellen im Log geprüft, ob es überhaupt ein Verbindungsversuch gab?
Wobei eigentlich gesagt sein muss, dass selbst wenn er keine SSH Verbindung herstellen kann z.B. durch Timeout, dass dieses im Log (Debugging Ausgabe) stehen muss. Ansonsten mal den Wireshark anschmeißen und schauen, was passiert, wenn du das Script manuell ausführst.
Viele Grüße,
Exception