Tag. On 21.09.2005 18:23, Matthias Houdek wrote:
Hallo Andre Tann, hallo auch an alle anderen
Am Dienstag, 20. September 2005 09:44 schrieb Andre Tann:
Hallo Liste.
Ich würde gerne in einem Skript prüfen, ob eine Netzwerkverbindung besteht oder nicht, und je nachdem abbrechen oder weitermachen.
Wie macht man denn sowas am elegantesten? Ich hab mir gedacht, ich könnte ja einen Ping absetzen und schauen, ob eine Antwort kommt. Aber erstens schlägt ein erster Ping oft fehl (wg. Dialup), und zweitens prüft diese Vorgehensweise genaugenommen ja die Verfügbarkeit des Zielrechners. Was ist, wenn der down ist, obwohl das Netz ansonsten verfügbar wäre? Oder wenn er neuerdings nicht mehr auf Ping reagiert?
Das erste Problem liesse sich lösen indem Du entweder einmal pingst, etwas wartest, und dann richtig loslegst, oder ein längeres Timeout und mehrere Retries einplanst, oder erstmal die Internetverbindung aufbaust. Das zweite Problem lässt sich lösen indem Du z.B. mehrere Rechner pingst die Du sinnvoll wählst - z.B. dürfte es unwahrscheinlich sein dass www.goole.com und www.microsoft.com und www.ibm.de gleichzeitig nicht erreichbar sind (allerdings würde ich etwas sorgfältiger auswählen, zum einen lieber IP-Adressen nutzen falls mein DNS ausgefallen ist, zum anderen die Zieladressen etwas zurückhaltend wählen - immerhin ist es unhöflich anderer Leute Resourcen unbedacht zu nutzen). Die eleganteste Möglichkeit ist nach meiner Meinung ein traceroute auf irgendeine IP-Adresse die (quasi) immer verfügbar ist, wobei mich nicht der ganze trace interessiert, sondern nur ob Pakete aus meinem Netz rausgehen, d.h. z.B. ob ein zweiter Router sich meldet - das wäre dann hier irgendein Router beim POP meines Providers, oder der Access point der Telekomiker.
Schau dir mal arping an.
Das Programm erfragt für die angegebeen IP die MAC der Netzwerkkarte. Die ist nötig für die direkte Adressierung (OSI-Schicht 1), weshalb der Zielrechner darauf immer antwortet (so er erreichbar ist).
Auch nicht unfehlbar... vor allem geht das nur im lokalen Subnetz. Grundsätzlich ist das Originalproblem nicht ohne. Bei den Leuten die sich damit beschäftigen gibt es eigentlich nur einen Konsens: Es gibt keine Möglichkeit einen Rechner "aufzuspüren" der nicht aufgespürt werden will. Daher hält man sich besser an Dienste als an Rechner - z.B. wird www.google.de u.U. pings ignorieren, aber auf http-Anfragen werden die schon antworten... Ansonsten: www.nagios.org bietet eine "grosse" Lösung. Die Plugins lassen sich auch einzeln zum Prüfen von Diensten einspannen (z.B. check_http). Und die Mailinglistenarchive enthalten leider zu 80% Fragen auf die man nur RTFM antworten kann, aber im Rest finden sich auch Perlen wenn man sich mit den Grundsätzen des Monitoring beschäftigen will oder muss. Arno -- IT-Service Lehmann al@its-lehmann.de Arno Lehmann http://www.its-lehmann.de