Erreichbarkeit einer IP prüfen

Alle Fragen zur Netzwerkkommunikation

Erreichbarkeit einer IP prüfen

Beitragvon DL3AD » 17. Dez 2019, 11:30 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
DL3AD
 
Beiträge: 432
Registriert: 13. Sep 2013, 11:07
Wohnort: Rügen
OS, Lazarus, FPC: Debian Buster (L 2.0.2) | 
CPU-Target: 64Bit
Nach oben

Beitragvon fliegermichl » 17. Dez 2019, 13:25 Re: Erreichbarkeit einer IP prüfen

ping?!?
fliegermichl
Lazarusforum e. V.
 
Beiträge: 464
Registriert: 9. Jun 2011, 08:42
Wohnort: Echzell
OS, Lazarus, FPC: Winux (L 2.0.7 FPC 3.04) | 
CPU-Target: 32/64Bit
Nach oben

Beitragvon mschnell » 17. Dez 2019, 13:29 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
mschnell
 
Beiträge: 3391
Registriert: 11. Sep 2006, 09:24
Wohnort: Krefeld
OS, Lazarus, FPC: svn (Window32, Linux x64, Linux ARM (QNAP) (cross+nativ) | 
CPU-Target: X32 / X64 / ARMv5
Nach oben

Beitragvon DL3AD » 17. Dez 2019, 14:09 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 ?
DL3AD
 
Beiträge: 432
Registriert: 13. Sep 2013, 11:07
Wohnort: Rügen
OS, Lazarus, FPC: Debian Buster (L 2.0.2) | 
CPU-Target: 64Bit
Nach oben

Beitragvon fliegermichl » 17. Dez 2019, 14:28 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.

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;         
 


Im text von Edit1 die IP Adresse oder den Namen des Rechners eintragen der angepingt werden soll.
fliegermichl
Lazarusforum e. V.
 
Beiträge: 464
Registriert: 9. Jun 2011, 08:42
Wohnort: Echzell
OS, Lazarus, FPC: Winux (L 2.0.7 FPC 3.04) | 
CPU-Target: 32/64Bit
Nach oben

Beitragvon DL3AD » 17. Dez 2019, 15:20 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 :shock:
In der Konsole ist sie mit ping 192.168.2.224 erreichbar.

Gruß Frank
PS: OS ist Debian buster
DL3AD
 
Beiträge: 432
Registriert: 13. Sep 2013, 11:07
Wohnort: Rügen
OS, Lazarus, FPC: Debian Buster (L 2.0.2) | 
CPU-Target: 64Bit
Nach oben

Beitragvon m.fuchs » 17. Dez 2019, 16:48 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
m.fuchs
Lazarusforum e. V.
 
Beiträge: 2171
Registriert: 22. Sep 2006, 18:32
Wohnort: Berlin
OS, Lazarus, FPC: Winux (Lazarus 2.0, FPC 3.0.4) | 
CPU-Target: x86, x64, arm
Nach oben

Beitragvon DL3AD » 17. Dez 2019, 17:45 Re: Erreichbarkeit einer IP prüfen

ping in der Konsole geht bei mir auch als user.
DL3AD
 
Beiträge: 432
Registriert: 13. Sep 2013, 11:07
Wohnort: Rügen
OS, Lazarus, FPC: Debian Buster (L 2.0.2) | 
CPU-Target: 64Bit
Nach oben

Beitragvon DL3AD » 17. Dez 2019, 18:22 Re: Erreichbarkeit einer IP prüfen

... so - habe mal ein Testprog für die Konsole gemacht - nun geht es.
DL3AD
 
Beiträge: 432
Registriert: 13. Sep 2013, 11:07
Wohnort: Rügen
OS, Lazarus, FPC: Debian Buster (L 2.0.2) | 
CPU-Target: 64Bit
Nach oben

Beitragvon af0815 » 17. Dez 2019, 22:35 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.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).
af0815
 
Beiträge: 3885
Registriert: 7. Jan 2007, 10:20
Wohnort: Niederösterreich
OS, Lazarus, FPC: FPC 3.2 Lazarus 2.0 per fpcupdeluxe | 
CPU-Target: 32Bit (64Bit)
Nach oben

Beitragvon fliegermichl » 18. Dez 2019, 06:36 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?
fliegermichl
Lazarusforum e. V.
 
Beiträge: 464
Registriert: 9. Jun 2011, 08:42
Wohnort: Echzell
OS, Lazarus, FPC: Winux (L 2.0.7 FPC 3.04) | 
CPU-Target: 32/64Bit
Nach oben

Beitragvon Warf » 18. Dez 2019, 13:07 Re: Erreichbarkeit einer IP prüfen

Warum benutzt du nicht die ping executable?
Code: Alles auswählen
if RunCommand('ping', ['-c', '1', 'IP'], dummy) = True then
  // Erreichbar
else
  // Nicht erreichbar
 


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
Warf
 
Beiträge: 1342
Registriert: 23. Sep 2014, 16:46
Wohnort: Aachen
OS, Lazarus, FPC: MacOS | Win 10 | Linux | 
CPU-Target: x86_64
Nach oben

• Themenende •

Zurück zu Netzwerk



Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 2 Gäste

porpoises-institution
accuracy-worried