Hi,
so wieder ein Projekt was ich angehen möchte. :-)
Um was gehte es?
Anwendung:
Ermitteln ob ein Rechner oder ein anderes Netzwerkgerät erreichbar (online) ist oder nicht (offliner). Zum Beispiel ist der Netzwwerkdrucker eingeschaltet oder haben die Kidis den PC noch an usw. Das muß jeder dann für sich festlegen .
Funktionsweise:
Das ping.sh Shell-Script "pingt" z.B. 10 LAN-Geräte im Netzwerk an.
Es macht immer z.B. 4 Pings und schreibt nach 4 Pings das Ergebnis als Prozentwert (0%, 25%, 50%, 100% Verluste) in eine ping.txt Datei für jede IP.
So könnte die ping.txt Datei dann aussehen:
PHP Code:
192.168.0.1 0%
192.168.0.50 25%
192.168.0.200 50%
192.168.0.201 50%
192.168.0.202 0%
Ein zweites status.sh Shell-Script liest die Daten für jede IP aus der ping.txt.
Und generiert eine status.html oder eine status.asp oder eine status.php.
Für jede IP eine Zeile und dahinter dann einen farbigen Punkt:
IP: 192.168.0.1 0% Verlust == grüne Punkt (Router)
IP: 192.168.0.50 25% Verlust == gelbe Punkt
IP: 192.168.0.200 50% Verlust == orange Punkt (LAN-Camera)
IP: 192.168.0.201 100% Verlust == rote Punkt (Netzwerkdrucker)
IP: 192.168.0.202 0% Verlust == grüne Punkt (Router)
Frage:
Was passiert wenn gerade das ping.sh in die Datei schreibt
und
das status.sh die html generieren will?
Was passiert wenn ein Netzwerkgerät folgende Antwort bringt:
z.B. bei “Antwort von 192.168.1.1: Zielhost nicht erreichbar”
Ansatz:
In Forum hier habe ich in diesem Thread Utility to check if In ternet is OK folgendes gefunden, was als Ansatz sicher verwendbar ist:
ping.sh
PHP Code:
#!/bin/sh
# ping script
#
# '#' -> testurl reachable
# '@' -> testurl not reachable, url is reachable
# '-' -> neither testurl, nor url is reachable
#
# testurl is a server from which you want to determine reachablility
testurl="www.hetnet.nl"
# url is a server located in your ISP domain and serves as a connection check
url="www.planet.nl"
# create file containing date
filename=`date +/tmp/ping/ping%m%d`
minute=`date +%M`
# start each hour on a new line
if [ $minute -eq 0 ]
then
echo >> $filename;
echo -n `date +%H:%M` >> $filename;
fi
if ping -c 2 $testurl
then
echo -n '#' >>$filename;
else
if ping -c 2 $url
then
echo -n '@' >>$filename;
else
echo -n '-' >>$filename;
fi
fi
gen_ping.awk
PHP Code:
BEGIN
{i=0;
}
{
pingname[i]=$1;
i++;
}
END {
n=i;
print "Content-type: text/html";
print "<HTML>";
print "<title>Ping statistics</title>";
print "<body bgcolor=\"#aaaaee\">";
print "<h1>Ping statistics </h1>";
print "<p>Choose date for statistics:";
print "<p><FORM ACTION = \"ping.cgi\"";
print "METHOD = GET> <SELECT NAME=day >";
for (i=0; i<n; i++)
print "<Option> " pingname[i] ;
print "</SELECT>";
print "<INPUT TYPE=SUBMIT value=\"Show\" >";
print "</FORM>";
print "</HTML>";
print "<p>";
print "<font color=\"blue\" size=\"2\">";
print "Ping statistics (c) 2004 by SOdB";
print "</font>";
}
ping.cgi
PHP Code:
#!/bin/sh
# cgi script to generate HTML page for ping statistics
#
AWK="/tmp/harddisk/busybox awk"
ls -1 /tmp/ping/ping* | grep ping[0-9][0-9][0-9][0-9] | $AWK -f gen_ping.awk
Warum heisst die Datei *.awk? Hat das eine Besondere Bedeutung unter Linux?
Vorschläge:
Wie würdet ihr das Shell-Script erweitern / ändern um das umzusetzten?
Gruß WLAN-Fan.
PS:
Es gibt auch große Netzwerk und Server Status Projekte:
Nagios:
Wächter der Netze - Überwachung mit Nagios
WikiPedia - Nagios
Nagios-Wiki (deutsch)
Zabbix:
Zabbix.com
Installing ZABBIX on Asus Wl-500gd and other mipsel HW
Open Source Server Monitoring Server- und Client-Überwachung mit Zabbix 1.4.2
Server- und Client-Überwachung mit Zabbix 1.4.2, Teil 2: Frontend