Externe IP-Adresse auslesen

Status
Für weitere Antworten geschlossen.

hssuhle

Neuer User
Mitglied seit
16 Mai 2005
Beiträge
174
Punkte für Reaktionen
0
Punkte
16
Hallo, *!

Nachdem mich heute die DynDNS-Registrierung geleimt hat, möchte ich gerne regelmäßig meine externe IP-Adresse auslesen und mit dem DynDNS-Eintrag vergleichen.

Leider erzählt mir die Box mit ifconfig aber nur, auf welcher Adresse sie das Modem anspricht (nämlich 192.168.179.1). Die externe IP-Adresse finde ich nirgends.

Klar steht sie im Web-Interface. Da kann ich sie aber mit wget auch nicht auslesen...

Gibt es hier jemanden, der einen Tip für mich hat?

Herzlichen Dank schonmal!

HSS
 
Möchtest Du das von Hand machen, oder scriptgesteuert? Wenn Du PHP-fähigen Webspace zur Verfügung hast, kannst Du die aktuelle externe IP beim Aufruf der Seite aus der Variablen $_SERVER['REMOTE_ADDR'] auslesen. Wenn Du dann die aktuelle Einstellung beim DynDNS auch noch irgendwie in das PHP-Script bekommst, kannst Du die beiden IPs direkt vergleichen und eine entsprechende Meldung ausgeben lassen.

HTH,
WIchard
 
Ich hatte eher vor, ein script per cronjob laufen zu lassen.

Und: Nur mal für mich als PHP-Laien: Wenn DynDNS meinen Eintrag ignoriert, also ins Nirvana zeigt, wie soll ich denn meinen Browser auf den richtigen Server lenken, so dass ich mir REMOTE_ADDR anzeigen lassen kann? :wiejetzt:

Danke für weiter Hilfen!

HSS
 
Du mußt das PHP-Script schon auf einem externen Server laufen lassen und nicht auf einem Rechner hinter der Box - sonst bekommst Du sowieso nur die interne IP... ;-)
Ansonsten kannst Du auch externe Services wie http://www.AllesEDV.at/ip.asp benutzen, um an Deine IP zu kommen.
Ob Du von einem Rechner hinter der FBF direkt aus der Box die aktuelle externe IP ablesen kannst, kann ich Dir leider nicht sagen, da ich gerade nicht an meine Box drankomme - ich sollte mal die Fernwartung einbauen...
 
Moin!

Hab für meine eigenen Belange das Minimal-Skript[php:1:ef6bd6dd2f]<?php
print $_SERVER['REMOTE_ADDR'];
?>[/php:1:ef6bd6dd2f]
auf einen meiner Experimentier-vServer gestellt. Der Link ist http://fo-pa.de/IP.php. Das Ergebnis ist die rein numerische IP-Adresse. Die sollte per wget sehr schön auswertbar sein...

Steht natürlich zur freien Verfügung ;-)
 
Danke, das ist sehr nett!

Lieber wäre es mir allerdings, wenn ich irgendwie "von innen" die externe IP-Adresse auslesen könnte.

Irgendwelche Ideen?

Danke schonmal!

HSS
 
Mach doch einen ping auf die DynDns-Adresse. Solange der geht ist sie registriert und falls der nicht geht, machst du z.B. ein restart des multid.
Ungefähr so:
Code:
#!/bin/sh 
while (true); do
while (ping -c 1 meinedyndns.mine.nu); do
sleep 5
done
echo "restart multid"
multid -s
sleep 5
multid
done
echo "finished"
MfG Oliver
 
Zuletzt bearbeitet:
Hey, Leute!

Ihr habt ja echt kreative Ideen!

Scheint aber leider notwendig zu sein, ein Workaround zu basteln, weil offensichtlich das Modem in der Box so blöd verbaut ist, dass man nicht "mal eben so" die externe IP auslesen kann.

Ich mache es jetzt per cronjob alle 10 Minuten über ein script:

#!/bin/bash
wget http://www.xxxxxx.de/ip.php --output-document=/var/data/my_ip
MY_REAL_IP=`cat /var/data/my_ip`
MY_DYNDNS=`host xxxxxx.homelinux.org | cut -d ' ' -f4`

if [ "$MY_REAL_IP" == "$MY_DYNDNS" ] ; then
exit 0
else
wget -q http://user:[email protected]/nic/update?hostname=xxxxxx.homelinux.org --output-document=/var/data/dyndns_antwort
fi


Danke an Euch alle für Eure Hilfe!

HSS
 
Wie wärs denn mit
Code:
wget -O /var/tmp/indexseite "http://localhost/cgi-bin/webcm?getpage=../html/de/menus/menu2.html&var:lang=de&var:menu=home&var:pagename=home"
Dann müsste man nur noch mit sed ein bissle rumbasteln (bin zu doof :oops: ), um die IP-Adresse aus der /var/tmp/indexseite auszulesen.
Sie steht im Klartext hinter
IpAdrDisplay("
 
Guten Abend,
In diesem Fall hilft dieses SED-Script:
Code:
sed -n 's/^.*IpAdrDisplay("\([0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\)").*$/\1/p' /var/tmp/indexseite

Hth Sascha
 
sascha schrieb:
Guten Abend,
In diesem Fall hilft dieses SED-Script:
Code:
sed -n 's/^.*IpAdrDisplay("\([0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\)").*$/\1/p' /var/tmp/indexseite
Hth Sascha
Meine antwort darauf ist:
Code:
weitere telnet Verbindung aufgebaut
#  sed -n 's/^.*IpAdrDisplay("\([0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\)").*$/\1/p' /var/tmp/indexseite
sed: /var/tmp/indexseite: No such file or directory
#
 
@novize:
die indexseite musst Du ja auch erst runterladen, so wie Pumbaa es vorgestellt hat...
 
die indexseite musst Du ja auch erst runterladen, so wie Pumbaa es vorgestellt hat...
:oops: - Ich schliesse mich dem Spruch von Pumbaa an: Ich bin zu doof...
 
Man kann sich den Umweg über die Datei allerdings auch sparen, und piped die Ausgabe direkt in den Stream Editor. Das würde dann so aussehen:
Code:
PASSWORD="test" # Passwort ggf anpassen

export REQUEST_METHOD="POST"
export REMOTE_ADDR="127.0.0.1"
export CONTENT_TYPE="application/x-www-form-urlencoded"
POST_DATA="login:command/password=$PASSWORD"
export CONTENT_LENGTH=${#POST_DATA}
echo -n "$POST_DATA" | /usr/www/html/cgi-bin/webcm > /dev/null

export REQUEST_METHOD="GET"
export REMOTE_ADDR="127.0.0.1"
export QUERY_STRING="getpage=../html/de/menus/menu2.html&var:lang=de&var:menu=home&var:pagename=home"
cd /usr/www/html/cgi-bin
./webcm |
sed -n 's/^.*IpAdrDisplay("\([0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\)").*$/\1/p'

[EDIT]
Der neue Code arbeitet auch bei gesetztem Passwort und ohne den Umweg über wget. Basiert auf Fritzchens Lösung.
[/EDIT]

Gruß Sascha
 
Fein.
Noch ein Vereinfachungsvorschlag:
Code:
./webcm | sed -n 's/.*IpAdrDisplay("\(.*\)".*/\1/p'
tut's auch (anstatt ./webcm | sed -n 's/^.*IpAdrDisplay("\([0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\)").*$/\1/p' ).


Hat jemand eine Ahnung, warum an dieser Stelle der Aufruf des webcm aus einem anderen Verzeichnis heraus nicht zum gewünschten Ergebnis führt?
(Auch wenn man bei getpage den absoluten Pfad
/usr/www/all/htmlde/menus/menu2.html&var:lang=de&var:menu=home&var:pagename=home
einträgt.)
 
Hallo Pumbaa80,

Dein Verfeinerungsforschlag funktioniert natürlich auch. Mit der Einschränkung, das er nicht prüft, ob zwischen den Anführungszeichen wirklich eine IP-Adresse steht. Ein weiteres Problem könnte auftreten, wenn in der Zeile nochmal irgendwo Anführungszeichen Auftauchen. Zeigt er dann alles bis zum ersten Anführungszeichen oder bis zum letzten? Ich weis es nicht.
Das würde dazu führen, das du hinterher ggf. noch prüfen mußt, ob du wirklich eine IP-Adresse bekommen hast.
Etwas verkürzen (nicht vereinfachen) kann man es noch so:
Code:
sed -n 's/^.*IpAdrDisplay("\(\([0-9]\{1,3\}\.\)\{3\}[0-9]\{1,3\}\)").*$/\1/p'
Wobei diese Formulierungen auch nicht ganz richtig sind, da sie Adressen von 0.0.0.0 bis 999.999.999.999 akzeptiert. Etwas besser, aber viel zu kompliziert währe:
Code:
sed -n 's/^.*IpAdrDisplay("\(\(\([01]\?[0-9]\{1,2\}\|2[0-4][0-9]\|25[0-5]\)\.\)\{3\}[01]\?[0-9]\{1,2\}\|2[0-4][0-9]\|25[0-5]\)").*$/\1/p'
Dieser Ausdruck trifft 0.0.0.0 bis 255.255.255.255. Wobei wahrscheinlich 2 ungültige Adressen (abhängig von der Netzmaske) immer noch erlaubt sind.
Wenn man davon ausgeht, das die Box keine falschen IP-Adressen ausgibt, würde wahrscheinlich auch das reichen:
Code:
sed -n 's/^.*IpAdrDisplay("\([\.0-9]*\)".*/\1/p'
Wobei dieser Ausdruck jede Kombination von Punkten und Ziffern akzeptiert.
[hr:b257dbcd48]Das Zeilenanfangszeichen ^ auf jeden Fall stehen lassen, da sich die Ausführungszeit auf der Box wesentlich verkürzt!

Gruß Sascha ;)
 
Und noch ein Script!

Code:
;
; AutoHotkey Version: 1.x
;
; Externe IP der Fritz!Box Fon (WLAN) ermitteln

 
page1=http://fo-pa.de/IP.php
page2=http://www.netikus.net/show_ip.html

URLDownloadToFile,%page1%, %A_ScriptDir%\ip.txt 
if ErrorLevel = 1 
  { 
    Progress,b2 w200 h200 zh15 ZY10 CBFFFFFF FM14 CTFFFFFF CW800000,,Die externe IP konnte nicht ermittelt werden!,
  } 
FileReadLINE,extip,%A_ScriptDir%\ip.txt, 1 
Progress, b2 w400 h50 zh0 ZY10 CBFFFFFF FM14 CTFFFFFF CW800000,,Die externe IP lautet: [ %extip% ],
FileDelete, ip.txt
sleep, 6000
Progress, Off

Dieses Script ist "nur" zum Anzeigen der IP. Kann aber entsprechend modifiziert werden.
 

Anhänge

  • fbf-ip.rar
    524.1 KB · Aufrufe: 14
OctaVerba schrieb:
Und noch ein Script!
Das läuft dann aber auf dem Windows-PC und nicht auf der Box selbst, oder?


Gruß,
Wichard
 
Status
Für weitere Antworten geschlossen.

Zurzeit aktive Besucher

Statistik des Forums

Themen
246,146
Beiträge
2,246,880
Mitglieder
373,655
Neuestes Mitglied
ralf-ddd
Holen Sie sich 3CX - völlig kostenlos!
Verbinden Sie Ihr Team und Ihre Kunden Telefonie Livechat Videokonferenzen

Gehostet oder selbst-verwaltet. Für bis zu 10 Nutzer dauerhaft kostenlos. Keine Kreditkartendetails erforderlich. Ohne Risiko testen.

3CX
Für diese E-Mail-Adresse besteht bereits ein 3CX-Konto. Sie werden zum Kundenportal weitergeleitet, wo Sie sich anmelden oder Ihr Passwort zurücksetzen können, falls Sie dieses vergessen haben.