Hallo alle Zusammen! kennt jemand eine Möglichkeit das Ergebnis eines PING's in einem Shell Script auszuwerten? Ich möchte damit so eine Art "Heartbeat Funktion" für div. Rechner in meinem Netz einbauen und wenn keine Antwort mehr kommt eine Mail senden ... Danke für jeden Tip Daniel
* Daniel Bauer wrote on 19 Dec 2001:
Hallo alle Zusammen!
kennt jemand eine Möglichkeit das Ergebnis eines PING's in einem Shell Script auszuwerten?
Ich möchte damit so eine Art "Heartbeat Funktion" für div. Rechner in meinem Netz einbauen und wenn keine Antwort mehr kommt eine Mail senden ...
Du setzt einen ping ab und wenn $? -eq 0 ist, dann war der Ping ok, ansonsten war die Kiste offline. Natürlich musst Du mittels -c die Anzahl Pings angeben. Details man ping.
Danke für jeden Tip
Daniel
-- Um die Liste abzubestellen, schicken Sie eine Mail an: suse-linux-unsubscribe@suse.com Um eine Liste aller verfügbaren Kommandos zu bekommen, schicken Sie eine Mail an: suse-linux-help@suse.com
Hallo, ich hab grade den kernel 2.4.16 (endlich) erfolgreich eingespielt, aber ich ärgere mich noch mit dem DSL herum. Ich hab den pppd updaten müssen, dafür hab ich zuerst mit rpm -e ppp das alte ppp gelöscht (war wohl dumm). Dann ging "pppoed" nicht mehr, da "passwordfd.so" mit gelöscht worden war, das neu eingespielte gepatchte Paket vom pppd aber kein solches enthielt. Macht nichts, geht ja auch über pap-secrets, /etc/ppp/options und "pppd eth0" zum starten. Dann wird das Plugin pppoe aufgerufen, und alles ist bestens. So, wenn ich dieses "/usr/sbin/pppd eth0" (Pfad stimmt) in ein init-script für den runlevel 5 aufnehme, wird keine neue route gesetzt, und ppp0 erscheint nicht in "route -n". Nach dem boot auf Konsole als root "/usr/sbin/pppd eth0" eingegeben, und alles geht! Was ist den da kaputt? Hat evtl. "eth0" irgendeinen "Pfad" oder so nötig? Danke fürs miträtseln Thomas
On Wed, 19 Dec 2001, Thomas Schubert wrote:
ich hab grade den kernel 2.4.16 (endlich) erfolgreich eingespielt, aber ich ärgere mich noch mit dem DSL herum.
Welchen Kernel? SuSE? Vanilla? Kernel korrekt configuriert?
Ich hab den pppd updaten müssen, dafür hab ich zuerst mit rpm -e ppp das alte ppp gelöscht (war wohl dumm). Dann ging "pppoed" nicht mehr, da "passwordfd.so" mit gelöscht worden war, das neu eingespielte gepatchte Paket vom pppd aber kein solches enthielt.
Welchen PPPoE Treiber verwendest du? Kernel? rp-pppoed? pppoed? (was der dritte ist, weiss ich nicht). Achso, ich hab seit ein paar Tagen auch DSL, hab dafuer den Kernel 2.4.16 genommen, mir den pppd-2.4.1 gesaugt, den pppoe-patch eingespielt (der bringt die $prefix/lib/pppd/$pppd_version/pppoe.so mit), alles installiert und funzt. Dazu dann noch ein initscript geschrieben (das ich aber bisher nur von Hand starte/stoppe). Wenn du mein init-script willst, melde dich (dem fehlt aber der "insserv" Kram, da ich insserv nicht kenne (SuSE 6.2)). Eine passwordfd.so habe ich nicht, dafuer eine /usr/lib/pppd/2.4.1/passprompt.so die aber dem Namen nach was anderes macht... -dnh --
Möchtest du lieber die kopflose Grete oder die Fraue ohne Unterleib? Naja! Mann hatt ja schon oft von Frauen gehöhrt die Ihren Kopf verloren haben. Aber was soll Ich mit einer Ohne Unterleib? Kann man die als Büstge in einer Vitrine spuken lassen? Hast du nichts in der Kategorie "Weisse Frau - Komplett"? [Bruder Franziskus und Woko° in dag°]
Hallo, On Wednesday 19 December 2001 20:26, Daniel Bauer wrote:
Hallo alle Zusammen!
kennt jemand eine Möglichkeit das Ergebnis eines PING's in einem Shell Script auszuwerten?
spontan fallen mir zwei Möglichkeiten ein. 1. Auswertung via "if" ---------------------- #! /bin/bash if ping -c1 www.hakuli.de > /dev/null 2>&1 then # Hier stehen die Befehle für den Fall # "Ping war erfolgreich" else echo "Oh, oh..."| mail -s "RIP" admin@somewhere.foo fi 2. Auswertung des Exit-Codes ---------------------------- #! /bin/bash ping -c1 www.hakuli.de > /dev/null 2>&1 if [ $? -eq 0 ] then # Hier stehen die Befehle für den Fall # "Ping war erfolgreich" else echo "Oh, oh..."| mail -s "RIP" admin@somewhere.foo fi Spontan fällt mir nichts ein, was im Falle "ping" gegen die kürzere und elegantere Variante 1 spräche. Schöne Grüße, Stephan -- /* Stephan Hakuli -=-=-=- http://www.hakuli.de/stephan Encryption with GnuPG/GPG is strongly encouraged, my public key is available on my website. -=- Kernel_source_comment_of_the_month=\ `find /usr/src/linux-2.2.20 -name "*.[hc]"|xargs grep "can grep"` */
On Wed, 19 Dec 2001, Stephan Hakuli wrote:
if ping -c1 www.hakuli.de > /dev/null 2>&1 [..] ping -c1 www.hakuli.de > /dev/null 2>&1 if [ $? -eq 0 ]
Tstst, Stephan... if wertet doch sowieso nur den exit-Status aus, und im zweiten Beispiel wertest du mit dem if somit nicht direkt den exit-Status vom ping aus, sondern den von 'test'... Siehe 'help if' ;) -dnh -- Take note of the toes you step on today as they may be connected to the ass you have to kick tomorrow. [Ben in the SDM]
Hallo... Am Donnerstag, 20. Dezember 2001 03:33 schrieb David Haller:
On Wed, 19 Dec 2001, Stephan Hakuli wrote:
if ping -c1 www.hakuli.de > /dev/null 2>&1 _________________________________________^^^^
Was bedeutet das denn? Ich kann mir denken, wozu es gut ist und das es mir helfen wird... Aber falls noch jemand so gütig ist, mir diese Zeichen zu erklären, ob es noch mehr davon gibt und wo ich die betr. Infos dazu finden kann, wär ich ihm sehr dankbar ;) Mfg, Christian -- _______________________________________________________________________ Support your local Club! ...visit: http://www.butanclub.de/
* Christian Schneider schrieb am 20.Dez.2001:
Am Donnerstag, 20. Dezember 2001 03:33 schrieb David Haller:
On Wed, 19 Dec 2001, Stephan Hakuli wrote:
if ping -c1 www.hakuli.de > /dev/null 2>&1 _________________________________________^^^^
Was bedeutet das denn? Ich kann mir denken, wozu es gut ist und das es mir helfen wird... Aber falls noch jemand so gütig ist, mir diese Zeichen zu erklären, ob es noch mehr davon gibt und wo ich die betr. Infos dazu finden kann, wär ich ihm sehr dankbar ;)
Bei Linux gibt es I/O-STreams, das sind Kanäle (file-Descriptor) über die ein Prozeß mit der Umgebung komunizieren kann. Standardmäßig sind die Kanäle 0, 1 und 2 mit der Standardeingabe, Standardausgabe und Standardfehlerausgabe belegt. Normalerweise gehen alle drei auf das kontrollierende Terminal, aber man kann sie umlenken. Mit < die Standardeingabe, mit > die Standardausgabe und mit 2> die Standardfehlerausgabe.[1] Sind weitere Kanäle definiert, so kann man auch die mit 3> usw. umlenken. Die Kanäle werden in der shell mit &0, &1, &2... bezeichnet. 2>&1 bedeutet somit, daß die Standardfehlerausgabe auf die Standardausgabe umgelenkt wird. Wichtig hierbei, daß dies *nach* dem Umlenken der Standardausgabe geschieht, da ein Umlenken der Standardausgabe, die Standardfehlerausgabe nicht mit zich zieht. (Gilt für weitere Kanäle natürlich auch.) Wenn an einer Stelle nicht > sondern >> steht, so heißt daß, das eine Datei nicht überschrieben werden soll, sondern die Ausgabe wird an der Datei angefügt. Bei << handelt es sich um ein Hire-Document. Befehl << ENDE Diese Zeilen werden als Standardeingabe für Befehl genommen. ENDE Steht das Wort, daß nach dem << steht, als erstes auf einer Zeile, so wird die Eingabe beendet. Das Wort gehört natürlich nicht mehr dazu. Anstelle von ENDE kann man auch END, EOT oder auch Blumenkohl oder etwas ganz anderes nehmen. Siehe auch man bash und dort nach descriptor suchen. [1] Es muß zwichen Eingabe und Ausgabedescriptoren unterschieden werden. < ist ein Eingabedescriptor und > sowie 2> sind Ausgabedescriptoren. Man könnte aber auch etwas mit 0> über die Standardausgabe ausgeben. Ob es Sinnvoll ist, ist eine andere Frage. Bernd -- Welches Buch ist zu empfehlen? Schon mal bei SuSE vorbeigesehen? http://www.suse.de/de/produkte/buecher/index.html oder die Empfehlungen der SuSE-Entwickler auf dem eigenen Rechner? file:///usr/shar/doc/sdb/de/html/literatur.html |Zufallssignatur 5
On Thursday 20 December 2001 03:33, David Haller wrote:
On Wed, 19 Dec 2001, Stephan Hakuli wrote:
if ping -c1 www.hakuli.de > /dev/null 2>&1
[..]
ping -c1 www.hakuli.de > /dev/null 2>&1 if [ $? -eq 0 ]
Tstst, Stephan...
[...] und im zweiten Beispiel wertest du mit dem if somit nicht direkt den exit-Status vom ping aus, sondern den von 'test'...
Tstst, David... *bg* sowas von Dir! Warst Du um halb vier noch oder schon wieder wach? ;-) Das obige Beispiel funktioniert, denn test wird bei erfolgreichem vorherigem Kommando ein "true" zurückgeben, sonst ein "false". Somit wird dann doch -- zugegeben auf Umwegen -- der Exitcode von ping ausgewertet. Oder habe ich Dich jetzt falsch verstanden und wir meinen das gleiche? Schöne Grüße, Stephan -- /* Stephan Hakuli -=-=-=- http://www.hakuli.de/stephan Encryption with GnuPG/GPG is strongly encouraged, my public key is available on my website. -=- Kernel_source_comment_of_the_month=\ `find /usr/src/linux-2.2.20 -name "*.[hc]"|xargs grep "can grep"` */
On Fri, 21 Dec 2001, Stephan Hakuli wrote:
On Thursday 20 December 2001 03:33, David Haller wrote:
On Wed, 19 Dec 2001, Stephan Hakuli wrote:
if ping -c1 www.hakuli.de > /dev/null 2>&1
[..]
ping -c1 www.hakuli.de > /dev/null 2>&1 if [ $? -eq 0 ]
Tstst, Stephan...
[...] und im zweiten Beispiel wertest du mit dem if somit nicht direkt den exit-Status vom ping aus, sondern den von 'test'...
Tstst, David... *bg*
sowas von Dir! Warst Du um halb vier noch oder schon wieder wach? ;-)
Noch.
Das obige Beispiel funktioniert, denn test wird bei erfolgreichem vorherigem Kommando ein "true" zurückgeben, sonst ein "false".
Nein. test gibt nix zurueck, sonder beendet sich mit nem exitcode von 0 oder 1... (naja, ich denke das meintest du auch).
Somit wird dann doch -- zugegeben auf Umwegen -- der Exitcode von ping ausgewertet. Oder habe ich Dich jetzt falsch verstanden und wir meinen das gleiche?
Ja klar. Aber es ist einfach ueberfluessig. Du koenntest ja auch ping ... if test $? -eq 0; then foo=0; else foo=1; fi if test foo -eq 0; then bar=0; else bar=1; fi if test bar -eq 0; then a=0; else a=1; fi if test a [..] [..] if test x -eq 0; then # das was man eigentlich machen will, wenn das ping # erfolgreich war... else [..] fi Wuerde auch funktionieren. Und ist nur eine konsequente Fortfuehrung von deinem Konstrukt ;)) Sinnvoll ist's hingegen, wenn man den exitstatus noch anderweitig braucht, wo sich dann $? schon wieder geaendert hat. ergebnis=`befehl 2>&1` errno=$? case $errno in 0) [mach was mit $ergebnis]; 1) [eigene Fehlermeldung];; [..] *) echo "Unknown error $errno" >&2; [..];; esac -dnh --
Strahlt ein pico bedeutend negativere vibrations aus als ein 'emacs /etc/fstab' und schreddert alle mountpoints? Schwer zu vergleichen: Das eine ist ein grauslicher Editor, das andere ein portables Betriebssystem dem ein Editor fehlt ... -- P. Lemken und A. Schreiber in dasr
Hallo, On Friday 21 December 2001 23:13, David Haller wrote:
On Fri, 21 Dec 2001, Stephan Hakuli wrote:
On Thursday 20 December 2001 03:33, David Haller wrote:
On Wed, 19 Dec 2001, Stephan Hakuli wrote:
if ping -c1 www.hakuli.de > /dev/null 2>&1
[..]
ping -c1 www.hakuli.de > /dev/null 2>&1 if [ $? -eq 0 ]
Tstst, Stephan...
[...] und im zweiten Beispiel wertest du mit dem if somit nicht direkt den exit-Status vom ping aus, sondern den von 'test'...
Tstst, David... *bg*
sowas von Dir! Warst Du um halb vier noch oder schon wieder wach? ;-)
Noch.
da von Dir auch Mails morgens um halb sechs in der Liste aufschlagen, ist diese Frage zuweilen nicht ganz unbegründet. *g*
Das obige Beispiel funktioniert, denn test wird bei erfolgreichem vorherigem Kommando ein "true" zurückgeben, sonst ein "false".
Nein. test gibt nix zurueck, sonder beendet sich mit nem exitcode von 0 oder 1... (naja, ich denke das meintest du auch).
Jepp. Wir Physiker sind manchmal mathematisch nicht ganz so präzise. Von wegen in erster Näherung und so...
Somit wird dann doch -- zugegeben auf Umwegen -- der Exitcode von ping ausgewertet. Oder habe ich Dich jetzt falsch verstanden und wir meinen das gleiche?
Ja klar. Aber es ist einfach ueberfluessig. Du koenntest ja auch
ping ... if test $? -eq 0; then foo=0; else foo=1; fi if test foo -eq 0; then bar=0; else bar=1; fi if test bar -eq 0; then a=0; else a=1; fi if test a [..] [..] if test x -eq 0; then # das was man eigentlich machen will, wenn das ping # erfolgreich war... else [..] fi
Wuerde auch funktionieren. Und ist nur eine konsequente Fortfuehrung von deinem Konstrukt ;))
*grmpf* Okay, okay, ich habe verstanden. ;-) Man könnte allerdings Deine vorherige Mail auch lesen wie "es wird sowieso immer true zurückgegeben", und das wäre falsch. Hätte mich aber bei Dir stark gewundert - obwohl, in der Glühweinzeit...
Sinnvoll ist's hingegen, wenn man den exitstatus noch anderweitig braucht, wo sich dann $? schon wieder geaendert hat.
ergebnis=`befehl 2>&1` errno=$? case $errno in 0) [mach was mit $ergebnis]; 1) [eigene Fehlermeldung];; [..] *) echo "Unknown error $errno" >&2; [..];; esac
ACK. Schöne Feiertage, Step`wo bleibt mein Shuttleservice zum Weihnachtsmarkt`han -- /* Stephan Hakuli -=-=-=- http://www.hakuli.de/stephan Encryption with GnuPG/GPG is strongly encouraged, my public key is available on my website. -=- Kernel_source_comment_of_the_month=\ `find /usr/src/linux-2.2.20 -name "*.[hc]"|xargs grep "can grep"` */
Hallo Daniel, hallo Leute, Am Mittwoch, 19. Dezember 2001 20:26 schrieb Daniel Bauer:
kennt jemand eine Möglichkeit das Ergebnis eines PING's in einem Shell Script auszuwerten?
Ich möchte damit so eine Art "Heartbeat Funktion" für div. Rechner in meinem Netz einbauen und wenn keine Antwort mehr kommt eine Mail senden ...
Es wurden Dir zwar schon die Variante mit if genannt, aber ich arbeite lieber mit Einzeilern ;-) ping rechnername -c1 && echo OK || echo Fehler Erklärung: Der Teil nach && wird ausgeführt, wenn alles OK ist, der nach || im Fehlerfall Du kannst natürlich auch nur ein && oder nur ein || verwenden. Frohe Weihnachten! Christian Boltz -- Registrierter Linux-Nutzer #239431 Linux is like a wigwam: no gates, no windows, but an apache inside.
participants (8)
-
B.Brodesser@t-online.de
-
Christian Boltz
-
Christian Schneider
-
Daniel Bauer
-
David Haller
-
Stephan Hakuli
-
Thomas Preissler
-
Thomas Schubert