Ping [Erledigt]
Moderator: Moderatoren
- Jan
- Marvin
- Beiträge: 14658
- Registriert: Fr, 23. Sep 2005 18:23
- Wohnort: 49328 Melle
- Hat sich bedankt: 21 Mal
- Danksagung erhalten: 88 Mal
- Kontaktdaten:
Ping [Erledigt]
Moin,
im Netzwerk gibt es Switches, die ich gerne regelmäßig auf Anwesenheit kontrollieren möchte (Stromausfall, Weggehängt, ...). Per CMD kann ich das natürlich mit Ping machen. Ich würde das aber gerne in eine allgemeine und automatische Routine in einem Xbase++-Programm unterbringen. Wie kann ich sowas lösen?
Jan
im Netzwerk gibt es Switches, die ich gerne regelmäßig auf Anwesenheit kontrollieren möchte (Stromausfall, Weggehängt, ...). Per CMD kann ich das natürlich mit Ping machen. Ich würde das aber gerne in eine allgemeine und automatische Routine in einem Xbase++-Programm unterbringen. Wie kann ich sowas lösen?
Jan
Zuletzt geändert von Jan am Do, 11. Jul 2019 12:45, insgesamt 1-mal geändert.
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
- Martin Altmann
- Foren-Administrator
- Beiträge: 16517
- Registriert: Fr, 23. Sep 2005 4:58
- Wohnort: Berlin
- Hat sich bedankt: 111 Mal
- Danksagung erhalten: 48 Mal
- Kontaktdaten:
Re: Ping
Moin,
ich würde mich nicht mit einfachen Ping-requests begnügen - nutze dafür die SNMP-Schnittstellen der Geräte (https://www.thomas-krenn.com/de/wiki/SNMP_Grundlagen), da bekommst Du wesentlich sinnvollere Aussagen dazu.
Viele Grüße,
Martin
ich würde mich nicht mit einfachen Ping-requests begnügen - nutze dafür die SNMP-Schnittstellen der Geräte (https://www.thomas-krenn.com/de/wiki/SNMP_Grundlagen), da bekommst Du wesentlich sinnvollere Aussagen dazu.
Viele Grüße,
Martin
Webseite mit XB2.NET und ausschließlich statischem Content in Form von HTML-Dateien: https://www.altem.de/
Webseite mit XB2.NET und ausschließlich dynamischem Content in Form von in-memory-HTML: https://meldungen.altem.de/
Mitglied der XUG Osnabrück
Vorsitzender des Deutschsprachige Xbase-Entwickler e. V.
- Jan
- Marvin
- Beiträge: 14658
- Registriert: Fr, 23. Sep 2005 18:23
- Wohnort: 49328 Melle
- Hat sich bedankt: 21 Mal
- Danksagung erhalten: 88 Mal
- Kontaktdaten:
Re: Ping
Martin,
interessanter Ansatz. Hilft hier aber anscheinend nicht weiter - ich kenne die OIDs des Switches nicht, und die Konfigurationsdaten geben die auch nicht her.
Jan
interessanter Ansatz. Hilft hier aber anscheinend nicht weiter - ich kenne die OIDs des Switches nicht, und die Konfigurationsdaten geben die auch nicht her.
Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
- HaPe
- 1000 working lines a day
- Beiträge: 996
- Registriert: So, 15. Nov 2015 17:44
- Wohnort: 71665 Vaihingen-Enz
- Hat sich bedankt: 17 Mal
- Danksagung erhalten: 15 Mal
Re: Ping
Hallo Jan !
Ich kann dir dazu FoxPro-Code anbieten:Per CMD kann ich das natürlich mit Ping machen. Ich würde das aber gerne in eine allgemeine und automatische Routine in einem Xbase++-Programm unterbringen. Wie kann ich sowas lösen?
Code: Alles auswählen
PROCEDURE SendPing
******************
LPARAMETERS tcIPAdress AS STRING
LOCAL lnDestination AS INTEGER, lnHopCount AS INTEGER, lnRoundTripTime AS INTEGER
LOCAL llReturn AS BOOLEAN
*-- API-Funktionen deklarieren
DECLARE INTEGER inet_addr IN WS2_32.DLL STRING cp
DECLARE INTEGER GetRTTAndHopCount IN Iphlpapi INTEGER DestIpAddress, LONG @HopCount, INTEGER MaxHops, LONG @RTT
*-- Parameter setzen
lnHopCount = 0
lnRoundTripTime = 0
*-- IP-Adresse als Zeichenkette in Integer umwandeln
lnDestination = inet_addr( tcIPAdress )
*-- Wenn die gewünschte IP-Adresse erreichbar war
IF GetRTTAndHopCount( lnDestination, @lnHopCount, 50, @lnRoundTripTime) <> 0
*-- Erfolgs-Meldung ausgeben
WAIT WINDOW ( 'Ping-Info', 'Die IP-Adresse ' + tcIPAdress + ' ist mit ' + STR( lnHopCount ) + ;
' Hops innerhalb ' + STR( lnRoundTripTime ) + ' Millisekunden erreichbar!' )
llReturn = .T.
ELSE
*-- Fehler-Meldung ausgeben
WAIT WINDOW( 'Fehler bei IP-Adresse', 'IP-Adresse ' + tcIPAdress + ' nicht erreichbar!' )
llReturn = .T.
ENDIF
RETURN( llReturn )
ENDPROC
--
Hans-Peter
Hans-Peter
-
- Der Entwickler von "Deep Thought"
- Beiträge: 2517
- Registriert: Mi, 28. Jul 2010 17:16
- Hat sich bedankt: 12 Mal
- Danksagung erhalten: 77 Mal
Re: Ping
Hallo Jan
Wenn du mit SNMP arbeiten willst für die Abfrage von SNMP gibts einge gute Command-Line Tools. z.B. Die sind Open-Source (net-snmp.org) mit denen kannst du ohne grosse Kentnisse SNMP Abfragen und das Resultat entsprechend deinen Wünsch parsen.
Ich verwende die für viele Geräte seit langem ohne Probleme. Weitere Infos dazu findest du auf der Seite die Martin erwähnt hat.
Wenn du mit SNMP arbeiten willst für die Abfrage von SNMP gibts einge gute Command-Line Tools. z.B. Die sind Open-Source (net-snmp.org) mit denen kannst du ohne grosse Kentnisse SNMP Abfragen und das Resultat entsprechend deinen Wünsch parsen.
Ich verwende die für viele Geräte seit langem ohne Probleme. Weitere Infos dazu findest du auf der Seite die Martin erwähnt hat.
Valar Morghulis
Gruss Carlo
Gruss Carlo
- Jan
- Marvin
- Beiträge: 14658
- Registriert: Fr, 23. Sep 2005 18:23
- Wohnort: 49328 Melle
- Hat sich bedankt: 21 Mal
- Danksagung erhalten: 88 Mal
- Kontaktdaten:
Re: Ping
So ist es.
Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
- Jan
- Marvin
- Beiträge: 14658
- Registriert: Fr, 23. Sep 2005 18:23
- Wohnort: 49328 Melle
- Hat sich bedankt: 21 Mal
- Danksagung erhalten: 88 Mal
- Kontaktdaten:
Re: Ping
Jimmy,
ich hab mal spaßeshalber Pablos Ping eingebaut. Klappt nicht. Der gibt mir nahezu immer ein .T. zurück. Selbst dann, wenn das cmd-Ping mir sagt, die IP existieren nicht. Was auch korrekt ist, die getestete IP gibt es defintiiv nicht.
Jan
ich hab mal spaßeshalber Pablos Ping eingebaut. Klappt nicht. Der gibt mir nahezu immer ein .T. zurück. Selbst dann, wenn das cmd-Ping mir sagt, die IP existieren nicht. Was auch korrekt ist, die getestete IP gibt es defintiiv nicht.
Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
- Jan
- Marvin
- Beiträge: 14658
- Registriert: Fr, 23. Sep 2005 18:23
- Wohnort: 49328 Melle
- Hat sich bedankt: 21 Mal
- Danksagung erhalten: 88 Mal
- Kontaktdaten:
Re: Ping
Das Sample von Carlo viewtopic.php?f=32&t=6300&p=73154&hilit ... ess#p73154 funktioniert leider auch nicht. Der gibt mir nahezu immer ein Nicht Erreichbar zurück. Da muß ich noch weiter testen. Es KÖNNTE daran liegen, das es im Netz unterschiedliche IP-Bereiche gibt (192.168.2...., 192.168.3...), die als Extern erkannt werden.
Jan
Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
- Jan
- Marvin
- Beiträge: 14658
- Registriert: Fr, 23. Sep 2005 18:23
- Wohnort: 49328 Melle
- Hat sich bedankt: 21 Mal
- Danksagung erhalten: 88 Mal
- Kontaktdaten:
Re: Ping
... wenn wir die Foxproler nicht hätten ...
Ich hab da ein uraltes Posting in einen Foxpro-Wiki gefunden, und auf Xbase++ umgeschrieben. Das scheint in der Tat sauber zu funktionieren. Ich muß das aber noch mal mit dem Admin gegenchecken, ob das mit den getesteten IP wirklich so korrekt ist. Sieht aber erstmal gut aus.
Ein späterer Kommentar in dem Posting sagt, daß das nur mit IP-Adressen funktioniert. Nicht mit URL. Was mich aber nicht sonderlich stört, da ich ja ohnehin nur auf (interne) IPs gehen will.
Damit könnte man per nHop und nRTT sogar die Hops und Antwortzeiten auslesen. Was ich hier aber nicht benötige.
Jan
Ich hab da ein uraltes Posting in einen Foxpro-Wiki gefunden, und auf Xbase++ umgeschrieben. Das scheint in der Tat sauber zu funktionieren. Ich muß das aber noch mal mit dem Admin gegenchecken, ob das mit den getesteten IP wirklich so korrekt ist. Sieht aber erstmal gut aus.
Ein späterer Kommentar in dem Posting sagt, daß das nur mit IP-Adressen funktioniert. Nicht mit URL. Was mich aber nicht sonderlich stört, da ich ja ohnehin nur auf (interne) IPs gehen will.
Code: Alles auswählen
DLLFUNCTION inet_addr(cIP) USING STDCALL FROM wsock32.DLL
DLLFunction GetRTTAndHopCount(DestIpAddress, @HopCount, MaxHops, @RTT) USING STDCALL FROM IPHLPAPI.DLL
FUNCTION myPing(cHost)
LOCAL nDst := 0
LOCAL nHop := 0
LOCAL nRTT := 0
LOCAL nReturn := 0
nDst := inet_addr(cHost)
nReturn := GetRTTAndHopCount(nDst, @nHop, 50, @nRTT)
IF nReturn <> 0
RETURN .T.
ELSE
RETURN .F.
ENDIF
RETURN .F.
Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
- HaPe
- 1000 working lines a day
- Beiträge: 996
- Registriert: So, 15. Nov 2015 17:44
- Wohnort: 71665 Vaihingen-Enz
- Hat sich bedankt: 17 Mal
- Danksagung erhalten: 15 Mal
Re: Ping
Hallo Jan !
Das ist doch genau der VFP-Code den ich im vierten Beitrag gepostet habe
Brille, Fielmann... wenn wir die Foxproler nicht hätten ...
Ich hab da ein uraltes Posting in einen Foxpro-Wiki gefunden, und auf Xbase++ umgeschrieben.
Das ist doch genau der VFP-Code den ich im vierten Beitrag gepostet habe
--
Hans-Peter
Hans-Peter
- Jan
- Marvin
- Beiträge: 14658
- Registriert: Fr, 23. Sep 2005 18:23
- Wohnort: 49328 Melle
- Hat sich bedankt: 21 Mal
- Danksagung erhalten: 88 Mal
- Kontaktdaten:
Re: Ping
Hallo Hans-Peter,
oops! Sorry. Aber um ehrlich zu sein: Foxpro ist ansich so gar nicht meine Welt, und den Code hatte ich nicht wirklich durchschaut. Und daher zwar überflogen, dann aber wegen Nichtverstehens beiseite gelegt. Nachdem ich mich jetzt aber durchs Netz gekämpft hatte mit verschiedenen MS-Dokus und passenden Samples in diversen Programmiersprachen (meistens ellenlang und komplett unverständlich für mich), war ich dann irgendwann darauf gestoßen. Wobei der gefundene Code wesentlich mehr nach Clipper/Xbase++ aussah als das, was Du gepostet hast - von daher war der wohl wesentlich verständlicher für mich als Dein Beispiel. Auch der eine DLL-Aufruf auf inet_addr sah anders aus, den hatte ich aber passend umgeschrieben.
Jetzt wo Du es sagst seh ich natürlich die Ähnlichkeit. Dumm gelaufen.
Jan
oops! Sorry. Aber um ehrlich zu sein: Foxpro ist ansich so gar nicht meine Welt, und den Code hatte ich nicht wirklich durchschaut. Und daher zwar überflogen, dann aber wegen Nichtverstehens beiseite gelegt. Nachdem ich mich jetzt aber durchs Netz gekämpft hatte mit verschiedenen MS-Dokus und passenden Samples in diversen Programmiersprachen (meistens ellenlang und komplett unverständlich für mich), war ich dann irgendwann darauf gestoßen. Wobei der gefundene Code wesentlich mehr nach Clipper/Xbase++ aussah als das, was Du gepostet hast - von daher war der wohl wesentlich verständlicher für mich als Dein Beispiel. Auch der eine DLL-Aufruf auf inet_addr sah anders aus, den hatte ich aber passend umgeschrieben.
Jetzt wo Du es sagst seh ich natürlich die Ähnlichkeit. Dumm gelaufen.
Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
-
- Der Entwickler von "Deep Thought"
- Beiträge: 2517
- Registriert: Mi, 28. Jul 2010 17:16
- Hat sich bedankt: 12 Mal
- Danksagung erhalten: 77 Mal
Re: Ping [Erledigt]
Hallo Jan
im Gerät muss SNMP aktiviert sein! Sonst geht gar nichts. (Ist als Standard oft deaktiviert, oder wird vom Admin deaktiviert. Was ich z.B. bei allen Geräten die SNMP nicht benötigen immer mache)
Und du musst den gesetzen SNMP Namen kennen.
In meinem Beispiel ist der public
Wenn User/Passwort gesetzt sind brauchst du diese auch.
Auf ein Ping antwortet ein Gerät auch nur wenn dies freigegeben ist.
Du hast nie geschrieben dass ein Ping auf CMD Ebene funktioniert. Ggf. könntest du die Ping Abfrage über ein unsichtbaren RunShell Aufruf mit Ausgabe in Textdatei ausführen und dann die Textdatei auf Antwort parsen.
im Gerät muss SNMP aktiviert sein! Sonst geht gar nichts. (Ist als Standard oft deaktiviert, oder wird vom Admin deaktiviert. Was ich z.B. bei allen Geräten die SNMP nicht benötigen immer mache)
Und du musst den gesetzen SNMP Namen kennen.
In meinem Beispiel ist der public
Wenn User/Passwort gesetzt sind brauchst du diese auch.
Auf ein Ping antwortet ein Gerät auch nur wenn dies freigegeben ist.
Du hast nie geschrieben dass ein Ping auf CMD Ebene funktioniert. Ggf. könntest du die Ping Abfrage über ein unsichtbaren RunShell Aufruf mit Ausgabe in Textdatei ausführen und dann die Textdatei auf Antwort parsen.
Valar Morghulis
Gruss Carlo
Gruss Carlo
- Jan
- Marvin
- Beiträge: 14658
- Registriert: Fr, 23. Sep 2005 18:23
- Wohnort: 49328 Melle
- Hat sich bedankt: 21 Mal
- Danksagung erhalten: 88 Mal
- Kontaktdaten:
Re: Ping [Erledigt]
Carlo,
klar wäre SNMP nett - weil ich da dann auch andere Infos bekommen könnte wie Tonerstände bei Druckern. Aber das ist hier nicht der Sinn der Sache. Hier geht es darum, ob ein Gerät überhaupt läuft. Gerade das Gerät, das diese Anfrage oben ausgelöst hatte, hängt sich alle paar Monate mal weg. Wenn ich das zeitnah bemerke und mir dann automatisch eine Warnmail schicken kann, ist das schon sehr gut.
Und ich hatte ja geschrieben, das ich das per Ping abfragen kann. So mache ich das im Moment - wenn von Mitarbeitern die Meldung kommt, das da was nicht zu funktionieren scheint, ping ich das Teil kurz an und weiß dann, ob ich das rebooten muß, oder was anderes los ist. Meist ist nichts los, pure Fehlbedienung.
Jan
klar wäre SNMP nett - weil ich da dann auch andere Infos bekommen könnte wie Tonerstände bei Druckern. Aber das ist hier nicht der Sinn der Sache. Hier geht es darum, ob ein Gerät überhaupt läuft. Gerade das Gerät, das diese Anfrage oben ausgelöst hatte, hängt sich alle paar Monate mal weg. Wenn ich das zeitnah bemerke und mir dann automatisch eine Warnmail schicken kann, ist das schon sehr gut.
Und ich hatte ja geschrieben, das ich das per Ping abfragen kann. So mache ich das im Moment - wenn von Mitarbeitern die Meldung kommt, das da was nicht zu funktionieren scheint, ping ich das Teil kurz an und weiß dann, ob ich das rebooten muß, oder was anderes los ist. Meist ist nichts los, pure Fehlbedienung.
Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.