Script Timeout

F

felixka

Jungspund
Hi,
Wie kann man in ein Script ein Timeout einbauen, das z.B. das Script beendet, wenn eine Web site down ist oder irgendwas anders sich aufhängt?
Code:
#!/bin/sh
.
TIMEOUT=10
.
wget http://xxxxxxxxxx
.
blah
.
blah x
.
exit 0

gruss - felix
 
Zuletzt bearbeitet:
Code:
if [-z Datei ]; then
exit 1
Würde ich mal sagen
 
Hallo
Den Timeout für wget kannst du im Programm selbst konfigurieren.
Dann den Rückgabecode ($?) auslesen, und du weißt ob erfolgreich oder nicht.
Allgemein:
Für solche Echtzeitprozesse ist die Shell nicht geeignet, da die Scripte im Batchmodus abgearbeitet werden.Das bedeutet, ein Command wird erst nach Beendigung des vorherigen ausgeführt.

Du kannst Subshells starten und in den Hintergrund schicken.
Oder die angewendeten Programme/Buildins haben selbst eine Option einen Timeout zu setzen (wie wget).

In jedem Fall musst du dich selbst um die Rückgabewerte und/oder noch laufenden Prozesse kümmern.

Dafür kannst du ps mit grep oder pgrep und kill verwenden.

Gruß Wolfgang
 
Danke,

Code:
#!/bin/sh

wget -T --connect-timeout=5 http://xxxxxxxxxx -O /filepath
.
blah
.
blah x
.
exit 0

Nach 5 Sekunden würde die Verbindung abgebrochen werden und der Rest des Skripts abgearbeitet werden. Richtig?

gruss - felix
 
Ist wohl so nicht richtig.

Wie ist der Syntax für wget mit timeout option?

Danke
felix
 
Hi,

vermutlich hast Du etwas in der manpage falsch verstanden.

Danke,
Code:
wget -T --connect-timeout=5 http://xxxxxxxxxx -O /filepath

Der Abschnitt
-T seconds
--timeout=seconds
soll ein synonym darstellen.

Code:
#entweder
wget -T 5 http://xxxxxxxxxx -O /filepath
#oder
wget --timeout=5 http://xxxxxxxxxx -O /filepath

--timeout ist imho im Skript sinnvoller, da ja auch mal der DNS (--dns-timeout) hängen oder der Download (--read-timeout) einschlafen könnte. Oder Du setzt sie einzeln mit verschiedenen Zeiten o. ä.

Bei Erreichen des Timeouts wird nur der wget-Befehl abgebrochen, nicht das komplette Skript.
Wenn Du dieses noch vom Erfolg des wget abhängig machen möchtest, hat Dir Wolfgang schon einen Hinweis dazu gegeben.

Gruß Daniel
 
@Fallout,

danke für die ausführliche Hilfe...glaube jetzt hab ich's geschnallt.
Bin halt neu im Geschäft.

Danke - felix
 

Ähnliche Themen

Shellscript unerwartetes Dateiende

Queue für copy Script

Zeilenweise suchen, löschen und ersetzen / Inhalt einfügen

OpenVPN - Server kann clients nicht erreichen.

NagiosGrapher 1.7.1 funktioniert nicht

Zurück
Oben