Erreichbarkeit einer IP prüfen
-
- Beiträge: 478
- Registriert: Fr 13. Sep 2013, 12:07
- OS, Lazarus, FPC: Debian Bullseye (L 2.2.0)
- CPU-Target: 64Bit
- Wohnort: Rügen
Erreichbarkeit einer IP prüfen
Hallo,
ich habe auf einem Raspi3 einen USBIP Server laufen der mir USB Geräte über LAN tunnelt auf einen Debian Rechner - das funktioniert soweit 1A.
Das ganze soll nun noch etwas komfortabler gestaltet werden - denn ich kann mich erst mit den getunnelten USB verbinden wenn der raspi läuft.
Dazu muss ermittelt werden ob der raspi schon läuft.
Wie ermittelt man z.B. mit LNet oder mit etwas anderem ob ein Rechner erreichbar ist?
Gruß Frank
ich habe auf einem Raspi3 einen USBIP Server laufen der mir USB Geräte über LAN tunnelt auf einen Debian Rechner - das funktioniert soweit 1A.
Das ganze soll nun noch etwas komfortabler gestaltet werden - denn ich kann mich erst mit den getunnelten USB verbinden wenn der raspi läuft.
Dazu muss ermittelt werden ob der raspi schon läuft.
Wie ermittelt man z.B. mit LNet oder mit etwas anderem ob ein Rechner erreichbar ist?
Gruß Frank
- fliegermichl
- Lazarusforum e. V.
- Beiträge: 1639
- Registriert: Do 9. Jun 2011, 09:42
- OS, Lazarus, FPC: Lazarus Fixes FPC Stable
- CPU-Target: 32/64Bit
- Wohnort: Echzell
-
- Beiträge: 3444
- Registriert: Mo 11. Sep 2006, 10:24
- OS, Lazarus, FPC: svn (Window32, Linux x64, Linux ARM (QNAP) (cross+nativ)
- CPU-Target: X32 / X64 / ARMv5
- Wohnort: Krefeld
Re: Erreichbarkeit einer IP prüfen
Wenn der Rechner eine eigene IP hat, geht vermutlich Ping am besten.
Wenn er hinter einem NAT Router sitzt, wird es schwierig.
-Michael
Wenn er hinter einem NAT Router sitzt, wird es schwierig.
-Michael
-
- Beiträge: 478
- Registriert: Fr 13. Sep 2013, 12:07
- OS, Lazarus, FPC: Debian Bullseye (L 2.2.0)
- CPU-Target: 64Bit
- Wohnort: Rügen
Re: Erreichbarkeit einer IP prüfen
... mit ping is mir schon klar - wie verwurste ich das in einem Program mit der Aussage Rechner erreichbar oder nicht ?
- fliegermichl
- Lazarusforum e. V.
- Beiträge: 1639
- Registriert: Do 9. Jun 2011, 09:42
- OS, Lazarus, FPC: Lazarus Fixes FPC Stable
- CPU-Target: 32/64Bit
- Wohnort: Echzell
Re: Erreichbarkeit einer IP prüfen
Formular mit edit1, button1 und memo1 erstellen und folgenden code beim buttonclick:
In den Abhängigkeiten muß synapse eingebunden werden.
Im text von Edit1 die IP Adresse oder den Namen des Rechners eintragen der angepingt werden soll.
In den Abhängigkeiten muß synapse eingebunden werden.
Code: Alles auswählen
implementation
uses pingsend;
{$R *.lfm}
{ TForm1 }
procedure TForm1.Button1Click(Sender: TObject);
var ps : TPingSend;
begin
ps := TPingSend.Create;
ps.TimeOut := 1000;
if ps.Ping(edit1.text) then
memo1.lines.add(Format('%s hat innerhalb %d ms geantwortet', [edit1.text, ps.PingTime]))
else
memo1.lines.add('TimeOut');
ps.Free;
end;
-
- Beiträge: 478
- Registriert: Fr 13. Sep 2013, 12:07
- OS, Lazarus, FPC: Debian Bullseye (L 2.2.0)
- CPU-Target: 64Bit
- Wohnort: Rügen
Re: Erreichbarkeit einer IP prüfen
Hallo fliegermichl,
Danke für den Codeschnipsel.
Der Code compiliert sauber durch - aber es kommt immer Timeout bei meiner zu testenden IP 192.168.2.224
In der Konsole ist sie mit ping 192.168.2.224 erreichbar.
Gruß Frank
PS: OS ist Debian buster
Danke für den Codeschnipsel.
Der Code compiliert sauber durch - aber es kommt immer Timeout bei meiner zu testenden IP 192.168.2.224

In der Konsole ist sie mit ping 192.168.2.224 erreichbar.
Gruß Frank
PS: OS ist Debian buster
- m.fuchs
- Lazarusforum e. V.
- Beiträge: 2805
- Registriert: Fr 22. Sep 2006, 19:32
- OS, Lazarus, FPC: Winux (Lazarus 2.0.10, FPC 3.2.0)
- CPU-Target: x86, x64, arm
- Wohnort: Berlin
- Kontaktdaten:
Re: Erreichbarkeit einer IP prüfen
Lass mal dein Programm mit Root-Rechten laufen. Pingen geht meines Wissens nach nur so.
Software, Bibliotheken, Vorträge und mehr: https://www.ypa-software.de
-
- Beiträge: 478
- Registriert: Fr 13. Sep 2013, 12:07
- OS, Lazarus, FPC: Debian Bullseye (L 2.2.0)
- CPU-Target: 64Bit
- Wohnort: Rügen
Re: Erreichbarkeit einer IP prüfen
ping in der Konsole geht bei mir auch als user.
-
- Beiträge: 478
- Registriert: Fr 13. Sep 2013, 12:07
- OS, Lazarus, FPC: Debian Bullseye (L 2.2.0)
- CPU-Target: 64Bit
- Wohnort: Rügen
Re: Erreichbarkeit einer IP prüfen
... so - habe mal ein Testprog für die Konsole gemacht - nun geht es.
- af0815
- Lazarusforum e. V.
- Beiträge: 6762
- Registriert: So 7. Jan 2007, 10:20
- OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
- CPU-Target: 32Bit (64Bit)
- Wohnort: Burgenland
- Kontaktdaten:
Re: Erreichbarkeit einer IP prüfen
Bei ping unter Linux kann es sein, das man dir capabilities richtig setzen muss, damit es ohne root geht. Das betrifft auch andere Socket operationen.
Aktuell kämpfe ich da beim Debuggen damit. Auf der Kommandozeile kann ich die richtig setzen, wenn ich aus Lazarus heraus debugge, kann ich die nicht setzen und Ping geht nicht.
Aktuell kämpfe ich da beim Debuggen damit. Auf der Kommandozeile kann ich die richtig setzen, wenn ich aus Lazarus heraus debugge, kann ich die nicht setzen und Ping geht nicht.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).
- fliegermichl
- Lazarusforum e. V.
- Beiträge: 1639
- Registriert: Do 9. Jun 2011, 09:42
- OS, Lazarus, FPC: Lazarus Fixes FPC Stable
- CPU-Target: 32/64Bit
- Wohnort: Echzell
Re: Erreichbarkeit einer IP prüfen
Hmm, kann ich bestätigen. (Ich hatte es unter Windows getestet, da hat es funktioniert)
Starte ich das Programm unter Linux als user, kommt TimeOut.
Mit "sudo ./pingtest" funktioniert es.
Welche capabilities kann man denn da beeinflussen?
Starte ich das Programm unter Linux als user, kommt TimeOut.
Mit "sudo ./pingtest" funktioniert es.
Welche capabilities kann man denn da beeinflussen?
-
- Beiträge: 2118
- Registriert: Di 23. Sep 2014, 17:46
- OS, Lazarus, FPC: Win10 | Linux
- CPU-Target: x86_64
Re: Erreichbarkeit einer IP prüfen
Warum benutzt du nicht die ping executable?
Wenn das so nicht geht (bin mir nicht sicher ob das result von runcommand den Exit Code wiederspiegelt) gibt’s ne überladene Variante von runcommand mit der der exit Code ausgelesen werden kann
Code: Alles auswählen
if RunCommand('ping', ['-c', '1', 'IP'], dummy) = True then
// Erreichbar
else
// Nicht erreichbar