Geektool Ping

B

biberator

Mitglied
Thread Starter
Dabei seit
12.02.2014
Beiträge
22
Reaktionspunkte
0
Hallo!

Ich möchte gern mittels Geektool Hosts überwachen.
Dazu habe ich jetzt ein Script gefunden:

HOST=192.168.10.180
PING=`ping -q -c 1 $HOST`
if [[ $? -eq 0 ]] ; then
TIME=`echo $PING |tail -1 | cut -d/ -f 5`
echo ${TIME}ms away from $HOST
exit 0
else
echo $HOST could not be reached
exit 2

fi

​Ich möchte jetzt aber mehrere Hosts gleichzeitig überwachen. Hierbei soll nicht die IP sondern der Name angezeigt werden.
Bei einem Host kann ich das ja direkt in GeekTool. Aber wie geht es bei mehreren und vor allem wie sieht das Kommando dann aus?
Vielen Dank für die Antworten!!!!!!!

Bildschirmfoto 2014-05-13 um 16.21.55.jpg


 
ich wuerde eine for i in schleife nehmen also

for i in hostip1 hostip2 host3 host4
do
PING=`ping -q -c 1 $i`
if [[ $? -eq 0 ]] ; then
TIME=`echo $PING |tail -1 | cut -d/ -f 5`
echo ${TIME}ms away from $i
exit 0
else
echo $i could not be reached >>pingfehler.log
exit 2
fi
done

http://www.cyberciti.biz/faq/bash-for-loop/

Die echo Ausgabe dann in eine Datei umleiten z.b. pingfehler.log und die dann per geektool anzeigen lassen.
 
Du kannst die Einträge sogar farbig markieren:

Code:
#!/bin/bash


hosts="192.168.2.99
192.168.2.100
192.168.2.1
192.168.2.45"


for i in $hosts
    do 
    if [ "$(ping -q -t1 -c1 $i|grep '1 packets received')" = "" ] 
    then
        echo -e "$i" "\033[31mOFF\033[0m"
    else
        echo -e "$i" "\033[32mON\033[0m"
    fi
done
 
Danke für die schnelle Unterstützung! Dein Vorschlag war genau das, was ich gesucht habe!
 
Werde mich gleich mal dran machen, es zu testen!
 
Funktioniert super! Kann ich auch statt der IP den Gerätenamen anzeigen lassen?
 
Wenn die Gerätenamen aufgelöst werden, also ein ping -q -t1 -c1 hostname funktioniert, kannst Du auch
hosts="host1
...
hostx"
schreiben.
 
Hier liegt das Problem, es sind auch Hosts aus anderen Netzen. Ich würde gern eigene Namen verwenden...
 
Du kannst hinter dein echo noch ein | sed 's/192.168.2.1/Server1/g;s/235.23.23.3/Server2/g;' hängen.
 
Ich habe jetzt die Formel angepasst, nun erscheint gar kein Text mehr.

hosts="192.168.10.1
192.168.10.200
192.168.10.210
192.168.10.18"


for i in $hosts
do
if [ "$(ping -q -t1 -c1 $i|grep '1 packets received')" = "" ]
then
echo "$i" |sed 's/192.168.10.1/Server1/g;s/192.168.10.200/Server2/g;s/192.168.10.210/Server3/g;s/192.168.10.18/Server4/g' "\033[31mAUS\033[0m"

else
echo "$i" |sed 's/192.168.10.1/Server1/g;s/192.168.10.200/Server2/g;s/192.168.10.210/Server3/g;s/192.168.10.18/Server4/g' "\033[32mAN\033[0m"

fi
done
 
echo $(echo "$i" | sed 's/192.168.10.1/Server1/g;s/192.168.10.200/Server2/g;s/192.168.10.210/Server3/g;s/192.168.10.18/Server4/g') "\033[31mAUS\033[0m"
 
JAAAAAAAA Super!!!!

Vielen Dank dedoteldot, jetzt ist es so wie ich es wollte!

Vielen Dank auch an Pill und asterixxER für die Hilfe!

Das Thema ist somit fertig
 
Kann das Script nicht mit so vielen Informationen umgehen oder habe ich einen Fehler eingebaut?



hosts="8.8.8.8

192.168.10.2
192.168.10.3
192.168.10.94
192.168.10.97
192.168.10.101
192.168.10.102
192.168.10.103
192.168.10.104
192.168.10.108
192.168.10.112
192.168.10.111
192.168.10.114
192.168.10.116
192.168.10.117
192.168.10.118
192.168.10.180
192.168.10.200
192.168.10.201
192.168.10.202
192.168.10.205
192.168.10.206
192.168.10.210
192.168.10.203
192.168.10.204
192.168.10.199
192.168.10.207
192.168.188.1
192.168.11.1
192.168.11.7
192.168.13.1
192.168.13.100
192.168.13.101
192.168.13.102
192.168.13.103
192.168.13.104
91.211.43.188"


for i in $hosts
do
if [ "$(ping -q -t1 -c1 $i|grep '1 packets received')" = "" ]
then
echo "\033[31mAUS\033[0m" $(echo "$i" | sed '
s/8.8.8.8/Google/g;
s/192.168.10.2/ASA-5510/g;
s/192.168.10.3/Proxy01/g;
s/192.168.10.94/topf-backup01/g;
s/192.168.10.97/topf-backup02/g;
s/192.168.10.101/topf-sw01/g;
s/192.168.10.102/topf-sw02/g;
s/192.168.10.103/topf-sw03/g;
s/192.168.10.104/topf-sw07/g;
s/192.168.10.108/Telefonanlage/g;
s/192.168.10.112/LAN-Disk1/g;
s/192.168.10.111/LAN-Disk2/g;
s/192.168.10.114/LAN-Disk4/g;
s/192.168.10.116/USV-BH/g;
s/192.168.10.117/USV-Ausst/g;
s/192.168.10.118/USV-AD/g;
s/192.168.10.180/Faxserver/g;
s/192.168.10.200/topf-vmhost01/g;
s/192.168.10.201/topf-broker01/g;
s/192.168.10.202/topf-broker02/g;
s/192.168.10.205/topf-dms01/g;
s/192.168.10.206/topf-dom02/g;
s/192.168.10.210/topf-vmhost02/g;
s/192.168.10.203/topf-db01/g;
s/192.168.10.204/topf-dienste01/g;
s/192.168.10.199/topf-dom01/g;
s/192.168.10.207/topf-exchange01/g;
s/192.168.188.1/Fritzbox/g;
s/192.168.11.1/Lancom-IZ/g;
s/192.168.11.7/LAN-Disk-IZ/g;
s/192.168.13.1/Lancom-Glinde/g;
s/192.168.13.100/LAN-Disk-Glinde/g;
s/192.168.13.101/Telefonanlage-Glinde/g;
s/192.168.13.102/topf-sw04/g;
s/192.168.13.103/topf-sw05/g;
s/192.168.13.104/topf-sw06/g;
s/91.211.43.188/Multishop/g')



else
echo "\033[32mAN\033[0m" $(echo "$i" | sed '
s/8.8.8.8/Google/g;
s/192.168.10.2/ASA-5510/g;
s/192.168.10.3/Proxy01/g;
s/192.168.10.94/topf-backup01/g;
s/192.168.10.97/topf-backup02/g;
s/192.168.10.101/topf-sw01/g;
s/192.168.10.102/topf-sw02/g;
s/192.168.10.103/topf-sw03/g;
s/192.168.10.104/topf-sw07/g;
s/192.168.10.108/Telefonanlage/g;
s/192.168.10.112/LAN-Disk1/g;
s/192.168.10.111/LAN-Disk2/g;
s/192.168.10.114/LAN-Disk4/g;
s/192.168.10.116/USV-BH/g;
s/192.168.10.117/USV-Ausst/g;
s/192.168.10.118/USV-AD/g;
s/192.168.10.180/Faxserver/g;
s/192.168.10.200/topf-vmhost01/g;
s/192.168.10.201/topf-broker01/g;
s/192.168.10.202/topf-broker02/g;
s/192.168.10.205/topf-dms01/g;
s/192.168.10.206/topf-dom02/g;
s/192.168.10.210/topf-vmhost02/g;
s/192.168.10.203/topf-db01/g;
s/192.168.10.204/topf-dienste01/g;
s/192.168.10.199/topf-dom01/g;
s/192.168.10.207/topf-exchange01/g;
s/192.168.188.1/Fritzbox/g;
s/192.168.11.1/Lancom-IZ/g;
s/192.168.11.7/LAN-Disk-IZ/g;
s/192.168.13.1/Lancom-Glinde/g;
s/192.168.13.100/LAN-Disk-Glinde/g;
s/192.168.13.101/Telefonanlage-Glinde/g;
s/192.168.13.102/topf-sw04/g;
s/192.168.13.103/topf-sw05/g;
s/192.168.13.104/topf-sw06/g;
s/91.211.43.188/Multishop/g')


fi
done
 
Mit "#!/bin/bash" als erste Zeile läuft es hier.
 
Ooooops! Jetzt sehe ich erst das Problem. Es kommt aus die Reihenfolge der sed Befehle an. Der s/192.168.10.2/ASA-5510/g; macht aus 192.168.10.200 ein ASA-551000, ein folgender s/192.168.10.200/topf-vmhost01/g; kann dann nicht mehr funktionieren. So sollte es besser funktionieren:
Code:
#!/bin/bash

    hosts="8.8.8.8
    192.168.10.94
    192.168.10.97
    192.168.10.101
    192.168.10.102
    192.168.10.103
    192.168.10.104
    192.168.10.108
    192.168.10.112
    192.168.10.111
    192.168.10.114
    192.168.10.116
    192.168.10.117
    192.168.10.118
    192.168.10.180
    192.168.10.200
    192.168.10.201
    192.168.10.202
    192.168.10.205
    192.168.10.206
    192.168.10.210
    192.168.10.203
    192.168.10.204
    192.168.10.199
    192.168.10.207
    192.168.10.2
    192.168.10.3
    192.168.188.1
    192.168.11.1
    192.168.11.7
    192.168.13.100
    192.168.13.101
    192.168.13.102
    192.168.13.103
    192.168.13.104
    192.168.13.1
    91.211.43.188"


    for i in $hosts
    do
    x=$(echo "$i" | sed '
    s/8.8.8.8/Google/g;
    s/192.168.10.94/topf-backup01/g;
    s/192.168.10.97/topf-backup02/g;
    s/192.168.10.101/topf-sw01/g;
    s/192.168.10.102/topf-sw02/g;
    s/192.168.10.103/topf-sw03/g;
    s/192.168.10.104/topf-sw07/g;
    s/192.168.10.108/Telefonanlage/g;
    s/192.168.10.112/LAN-Disk1/g;
    s/192.168.10.111/LAN-Disk2/g;
    s/192.168.10.114/LAN-Disk4/g;
    s/192.168.10.116/USV-BH/g;
    s/192.168.10.117/USV-Ausst/g;
    s/192.168.10.118/USV-AD/g;
    s/192.168.10.180/Faxserver/g;
    s/192.168.10.200/topf-vmhost01/g;
    s/192.168.10.201/topf-broker01/g;
    s/192.168.10.202/topf-broker02/g;
    s/192.168.10.205/topf-dms01/g;
    s/192.168.10.206/topf-dom02/g;
    s/192.168.10.210/topf-vmhost02/g;
    s/192.168.10.203/topf-db01/g;
    s/192.168.10.204/topf-dienste01/g;
    s/192.168.10.199/topf-dom01/g;
    s/192.168.10.207/topf-exchange01/g;
    s/192.168.10.2/ASA-5510/g;
    s/192.168.10.3/Proxy01/g;
    s/192.168.188.1/Fritzbox/g;
    s/192.168.11.1/Lancom-IZ/g;
    s/192.168.11.7/LAN-Disk-IZ/g;
    s/192.168.13.100/LAN-Disk-Glinde/g;
    s/192.168.13.101/Telefonanlage-Glinde/g;
    s/192.168.13.102/topf-sw04/g;
    s/192.168.13.103/topf-sw05/g;
    s/192.168.13.104/topf-sw06/g;
    s/192.168.13.1/Lancom-Glinde/g;
    s/91.211.43.188/Multishop/g')

    if [ "$(ping -q -t1 -c1 $i|grep '1 packets received')" = "" ]
    then
    echo "\033[31mAUS\033[0m" $x

    else
    echo "\033[32mAN\033[0m" $x

    fi
    done

Wenn Du nur den Namen bunt haben willst, kannst Du AN/AUS durch $x ersetzen.

Sorry für die "Falschmeldung".
 
Toll! Danke. Vielen Vielen Dank für deine Mühe. Du hast mir damit sehr geholfen.
Komischerweise muss ich bei mir das #!/bin/bash entfernen, da sonst der Code für die farbliche Darstellung in Echt, d.h. 033..... dargestellt wird.
So sieht es nun bei mir aus! Letzte Frage, versprochen, kann ich das An auch durch einen grünen und aus durch einen roten Punkt ersetzen?

Bildschirmfoto 2014-05-15 um 07.12.29.jpg
 
Mit #!/bin/bash muss das Terminal auf ASCII eingestellt sein. Einen Punkt hab ich jetzt nur als Unicode gefunden, probier mal AN/AUS mit \U2b24 zu ersetzen. Das sollte einen großen Punkt anzeigen.
 
da steht jetzt [FONT=Verdana, Arial, Geneva, sans-serif]\U2b24 statt AN oder AUS. Hast du das alles im Kopf? Auf dem Bild siehst du die Ausgabe, wenn ich [/FONT]#!/bin/bash eingefügt habe!

Bildschirmfoto 2014-05-15 um 10.06.09.jpg
 
Wie gesagt, das Terminal auf ASCII einstellen:
Im Terminal Einstellungen wählen (⌘,), dann dort unter Einstellungen Zeichen-Codierung auf ASCII stellen.

Terminal Einstellungen.jpg

So funktioniert es bei mir im Terminal, Geek-Tool habe ich nicht. Aber wenn vorher die Farben und nicht die Escape Sequenzen dargestellt hat, müsste es auch auf ASCII stehen.

Nochwas: die Reihenfolge in hosts="..." ist egal, beim sed musst Du aufpassen. Oder Du schreibst in hosts="..." und im sed die Adressen immer dreistellig mit führenden Nullen, also z.B. 192.168.010.002 statt 192.168.10.2. Dann sind die Adressen für sed eindeutig und dem ping ist es egal.
 
Geektool kann ich generel emfehlen. Bei mir zeigt geektool standardmaessig das system.log an, da sieht man dann schoen, wenn mal eine App irgendwie "nichts macht", was da in wirklcihkeit ablaeuft. Auch die Groesse der TM Backups wird waehrend des Backups angezeigt.
 
Zurück
Oben Unten