Hinweis: Das Forum wird geschlossen! Neue Registrierungen sind nicht mehr möglich!

 Zurück zu Pro-Linux   Foren-Übersicht   FAQ     Suchen    Mitgliederliste
Ping skript

 
Dieses Forum ist gesperrt, Sie können keine Beiträge editieren, schreiben oder beantworten.   Dieses Thema ist gesperrt, Sie können keine Beiträge editieren oder beantworten.    Pro-Linux Foren-Übersicht -> Linux-Forum (alt)
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
alx



Anmeldungsdatum: 20.01.2000
Beiträge: 64

BeitragVerfasst am: 16. Aug 2000 11:07   Titel: Ping skript

Möchte ein kl. skript schreiben, mit dem ich automatisch alle Rechner aus einer Ip-Liste anpinge und die Antworten(oder das Schweigen) auswerten kann. Kann mir da jemand einen Tipp geben, bevor ich mich durch sämtliche Doku. durchkämpfen muss. So z.B wie ich das Programm "ping" so mit Parameter bompardiere, dass es einen Ergebniswert zurückliefert etc...

mfg AlX
 
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen

hugenay
Gast





BeitragVerfasst am: 16. Aug 2000 12:02   Titel: Re: Ping skript

lässt sich doch leicht machen, hoffe die Formatierungen gehen net flöten. Ausgegangen wird von der Datei "rechner", in der die Liste ist:
Julia 192.168.0.2
Lena 192.168.0.4
Anne 192.168.0.7


#!/bin/sh
#dies ist /home/skripte/ping_skript
# gibt jeder 1 Sekunde (=ping -w 1)

ping_liste=/home/skripte/rechner
Ausgabe=/home/skripte/online_nachfrage$$
Anz_Rechner=$(wc -l <$ping_liste)

typeset -i i=1
while [ $i -le "$Anz_Rechner" ] ; do
Rechner=$(sed -n -e "${i}p" $ping_liste);
set -- $Rechner
Rechner_online=$(ping -c 1 -w 1 $2)
if [ -n "`echo $Rechner_online | grep \"1 packets received\"`" ] ; then
echo "$1 ist online" >>$Ausgabe ;
else
echo "$1 ist offline" >>$Ausgabe ;
fi
i=i+1
done
cat "$Ausgabe"
rm $Ausgabe
exit 0


hoffe hat sich kein fehler eingeschmuggelt, ich habs nur kurz kontrolliert
gruss hug
mist, hab gerad in der Vorschau gesehen, dass die Formatierungen weg sind, naja ist auch so einigermassen übersichtlich
 

AlX
Gast





BeitragVerfasst am: 16. Aug 2000 15:26   Titel: Re: Ping skript

schönes Skript aber leider gibt es die Option -w bei dem Programm "ping" nicht. Ich benutze Redhat 5.2. Gibt es eine andere Möglichkeit um nur eine kurze Zeit einen host abzufragen. Mit der -c (count) Option werden leider nur die empfangenen Packete gewertet und nicht die Gesendeten.

AlX
 

Jochen
Gast





BeitragVerfasst am: 16. Aug 2000 15:47   Titel: Re: Ping skript

Hmm, an Deinem Skript kann man aber noch was verbessern...

code:
#!/bin/bash
#dies ist /home/skripte/ping_skript
# gibt jeder 1 Sekunde (=ping -w 1)

PING_LISTE=/home/skripte/rechner

while read RECHNER IP_ADRESSE ; do
if ping -c 1 -w 1 $IP_ADRESSE | grep "1 packets received" >/dev/null 2>&1 ; then
echo "$RECHNER ($IP_ADRESSE) ist online"
else
echo "$RECHNER ($IP_ADRESSE) ist offline"
fi
done < $PING_LISTE

exit 0



'N bisschen kürzer und übersichtlicher (ja, ja, ich weiss, manchmal bin ich echt 'n Klugscheisser...).

Aber davon abgesehen: Das ping aus netkit-base-0.12-29 (RH 6.0) kann die Option w für wait nicht. Kann also auf älteren Distros schief gehen.

Meine Alternative wäre gewesen, genau einen Ping auf die Broadcast-Adresse zu machen. Scheinbar antworten aber nicht unbedingt alle Rechner, manche scheinen ein Broadcast-ICMP-ECHO zu verwerfen .
 

germannightwing



Anmeldungsdatum: 08.08.2000
Beiträge: 29
Wohnort: Oberhausen

BeitragVerfasst am: 16. Aug 2000 15:50   Titel: Re: Ping skript

Hallo,

Vielleicht hilft es dir wenn du das Script auf das nötigste reduzierst und
dann einen cronjob startest der alle 5 min. ( oder so ) das script startet.

In die /etc/crontab müsste dann folgendes: * 5 * * * update-ping

Damit würde dann alle 5 Min. das script gestartet.

bye
/ Bernd /
 
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen

Jochen
Gast





BeitragVerfasst am: 16. Aug 2000 16:06   Titel: Re: Ping skript

Um am "ping -w 1" vorbeizukommen, muss man 'n bisschen tricksen:
code:

#/bin/bash

terminating_ping() {
ping "$@" &
sleep 2
kill -INT $!
}

PING_LISTE=/home/skripte/rechner
while read RECHNER IP_ADRESSE ; do
if terminating_ping $IP_ADRESSE | grep "^[0-9][0-9]* bytes from" >/dev/null 2>&1 ; then
echo "$RECHNER ($IP_ADRESSE) ist online"
else
echo "$RECHNER ($IP_ADRESSE) ist offline"
fi
done < $PING_LISTE

exit 0



terminating_ping() ist eine Shell-Funktion, die sämtliche Parameter an ping weitergibt, den ping im Hintergrund startet, 2 sec wartet und den Ping dann explizit abschiesst.
 

Jochen
Gast





BeitragVerfasst am: 16. Aug 2000 16:09   Titel: Re: Ping skript

Ahem, Bernd, fast:

* 5 * * * update-ping

sorgt dafür, dass das Skript von 5.00 bis 5.59 zu jeder Minute ausgeführt wird... Das gewünschte erhält man mittels

*/5 * * * * update-ping

(Aber sieh Dir vorher mein Skript [letzte Version] an, das tut's so wie spezifiziert...)
 

hugenay
Gast





BeitragVerfasst am: 16. Aug 2000 18:18   Titel: Re: Ping skript

@Jochen
klär mich nochens über `read` auf. (von Klugscheissern kann man lernen -Smile)
Du liest in deinem Skript mit read 2 Variablen ein, glaub ich, und die werden aus $PING_LISTE eingelesen. Ping_Liste hat das Format "Rechnername IP_Adresse" (?). Was mich nur wundert ist, dass man $PING_LIste ans Ende der While-Schleife stellen kann und dann per Eingabeumlenkung einlesen kann. Warum geht das? Oder täusch ich mich und das geht ganz anders?
Und ich dachte Funktionen leitet man mit "function" ein, hab leider nur fenster98 hier, kann das alles nur "virtell" angehen.

Ping ist wäre bei ner firewall sowieso nicht so sinnvoll, ich lehne im lan daheim beispielsweise sämtliche echo_requests ab....
 

Jochen
Gast





BeitragVerfasst am: 17. Aug 2000 7:34   Titel: Re: Ping skript

read liest (wie immer) von stdin. Dabei werden die Eingabezeilen in Felder aufgeteilt. Als Trennzeichen wird der Inhalt der Shellvariablen IFS verwendet. Bei Änderung von IFS vorsichtig sein, da auch die Shell selbst zum Auftrennen der Kommandozeile in Argumente darauf zurückgreift! read liefert bei gelesener Zeile einen Exit-Code von 0, bei EOF 1, in Fehlerfällen 2, also sehr praktisch für while-Schleifen.

Die Eingabeumleitung am Ende der while-Schleife gilt tatsächlich für alle Kommandos im Schleifenkörper, inkl. der while-Bedingung. Schau Dir mal das folgende Pseudo-Kommando an:
cat datei | mycmd
Ist doch 1 Prozess zuviel (cat), da man ja auch
mycmd <datei
schreiben kann. Jetzt setze anstelle von "mycmd" eine while-Schleife ein, und die Syntax ist schon nicht mehr so merkwürdig. Ein Problem ist höchstens die Übersichtlichkeit, wenn der Schleifenkörper sehr gross ist.

Und ja, Funktionen kann man in der bash (und der Korn-Shell ksh, wahrscheinlich also auch in der zsh) mit dem Schlüsselwort "function" definieren. Aber nicht in der Bourne-Shell sh! Und da ich damit Shellprogrammieren gelernt habe, verwende ich auch heute noch die sh-Syntax, da bash und ksh die auch verstehen.

Die Beschreibung zu read findest Du in der man-Page zu bash, da es eine eingebaute Shell-Funktion ist.

Alle Klarheiten beseitigt?
 

hugenay
Gast





BeitragVerfasst am: 17. Aug 2000 9:10   Titel: Re: Ping skript

@jochen
so ziemlich -Smile, nur 1 frage noch, was hat 'while' davon, wenn es einen exitcode 2 von read bekommt. die while schleife läuft doch solange 'true' (0) und hört bei 'false' (1) auf, wenn nu 2 übergeben wird passiert doch dasselbe wie bei 'false', dacht ich bisher wenigstens...
 

Jochen
Gast





BeitragVerfasst am: 17. Aug 2000 12:39   Titel: Re: Ping skript

'Türlich, da denkst Du die ganze Zeit auch schon richtig. Diese Exit-Codes haben halt zur Folge, dass bei Lesefehlern (keine Berechtigung, Platte abgeraucht, ...) die Schleife auch abbricht! Das nimmt man schon mal als nettes "Feature" wahr, wenn man im awk mittels getline Zeilen händisch (an der Hauptschleife des awk vorbei) einliest. getline gibt C-mässig 1 für Erfolg, 0 für EOF und -1 für Lesefehler zurück. Ich möchte nicht wissen, wie viele potentielle Endlosschleifen da draussen lauern, weil die "so-kurz-wie-möglich"-Fraktion nur
while (getline var < "datei") { 

# Potentielle Endlosschleife
}
anstelle von
while ((getline var < "datei") > 0) { 

# Bricht immer ab, es sei denn, man liest aus /dev/zero...
}
codet... Wohlgemerkt: Das Code-Fragment oben ist awk-Code, nicht Shell! Aber das beleuchtet halt, weshalb ich a) alle Fälle erwähne und b) über diese Einteilung froh bin.

Noch was? Ich lasse gerne mal meine schulmeisterliche Art raushängen!
 

hugenay
Gast





BeitragVerfasst am: 17. Aug 2000 16:02   Titel: Re: Ping skript

nochmal thx. hast du vielleicht irgendwelche tips auf lager wie man sich awk aneignen kann (dokus, urls), ich fand sed ja schon hart, aber wenn ich awk nur sehe....
hab schon überlegt das sed&awk buch von o'reilly zu kaufen...
bis dahin, freu mich gerade über debian 2.2 -Smile
 

germannightwing



Anmeldungsdatum: 08.08.2000
Beiträge: 29
Wohnort: Oberhausen

BeitragVerfasst am: 17. Aug 2000 22:30   Titel: Re: Ping skript

Hallo Jochen,

Kann nur ein Tippfeeler gewesen sein.

bye
/ Bernd /
_________________
<!--http--><a href="http://www.blue-temple.de" target="_blank"><img src="http://www.blue-temple.de/footer.png" border="0"></a><!--url-->
 
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen

Jochen
Gast





BeitragVerfasst am: 18. Aug 2000 6:46   Titel: Re: Ping skript

Wenn Du einigermassen Englisch kannst, hast Du mit einiger Sicherheit schon eine sehr gute Doku an bord: "info awk" (info gawk?!?) Die ist nicht schlecht, mit einführenden Beispielen usw.

sed ist nur kompliziert, wenn man ihn für Sachen verwenden will, für die er nicht gebaut ist. Ist halt 'n Editor, dem man vorher sagen muss, was er tun soll. awk dagegen ist eine ausgewachsene Programmiersprache mit Erleichterungen & Features zur Textbe- und -verarbeitung, Reportgenerierung usw. Natürlich nicht mit perl zu vergleichen, aber der Lernaufwand ist geringer. Das wenige, was manchen Leuten beim awk richtig Schwierigkeiten macht, sind einmal die assoziativen Arrays und zweitens die Übersicht zu behalten, was der awk schon alles für einen erledigt, bevor man selbst den ersten Handschlag tut .
 

hugenay
Gast





BeitragVerfasst am: 18. Aug 2000 12:36   Titel: Re: Ping skript

thx für die infos nochmal...
dann muss ich mich wohl mal ran wagen -Smile
 

Beiträge vom vorherigen Thema anzeigen:   
     Pro-Linux Foren-Übersicht -> Linux-Forum (alt) Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehen Sie zu:  

Powered by phpBB © phpBB Group
pro_linux Theme © 2004 by Mandaxy