Externe IP herausfinden?

sheep

sheep

Aktives Mitglied
Thread Starter
Dabei seit
21.03.2005
Beiträge
1.255
Reaktionspunkte
25
Helft mir doch bitte mal auf die Sprünge:

Mein Powerbook ist hinter einem ADSL-Router, der sich ins Internet einwählt. Wie kann ich im Terminal dessen "externe" IP (= die vom Internet aus sichtbare) herausfinden? ifconfig und netstat sagen dazu nichts, die interne kenne ich natürlich bzw. könnte ich auch mit netstat herausfinden, nützt mir aber nichts.

Wichtig: es muss im Terminal sein, graphische Tools kann ich nicht brauchen, ist für ein Script.
 
Es gibt ja www.whatismyip.com...
Nun koennte man ja notfalls mit dem Textbrowser lynx diese Seite aufrufen und das daraus irgendwie ziehen...

Edit: Eine "schmutzige" Variante waere auch der Abruf der Seite mit wget. Dann kannst du die IP Adresse ja mit grep oder awk aus der html Datei ziehen und dann weiter verarbeiten.

Edit2: Wenn du einen Dyndns Dienst verwendest, kannst du den auch von intern pingen und bekommst dann die IP aufgeloest...da koennte man auch wieder greppen oder aehnliches...
 
Zuletzt bearbeitet:
Gute Idee, danke Radiohead!

Geht z.B. so:

lynx http://www.whatismyip.com -source | grep "Your IP Is"

Jetzt muss ich mich noch etwas in CUT einlesen (damit sollte das doch gehen, oder?), um die IP einzeln zu extrahieren (derzeit ist es eine Zeile HTML-Code, die ausgelesen werden), aber der Weg ist schon mal gut :).

Edit: Geht doch:

lynx http://www.whatismyip.com -source | grep "Your IP Is" | cut -b 37-49
 
Das ist doch super :)
So funktioniert es auf jedenfall...
 
Radiohead schrieb:
Das ist doch super :)
So funktioniert es auf jedenfall...
Ich habe gerade ein Problem bemerkt und zwar ist die Lösung zu wenig flexibel, weil sie immer dieselbe Anzahl bestimmter Bits ausliest.

Korrigierte Fassung daher:

lynx http://www.whatismyip.com -source | grep "Your IP Is" | cut -d " " -f 5 | cut -d "<" -f 1

Das schneidet zuerst alles vor der IP ab und entfernt danach die HTML-Tags dahinter. So funktioniert es unabhängig davon, wieviele Ziffern die aktuelle IP hat. Ist zwar nicht schön, funktioniert aber :).
 
Du kannst auch Deinen Router fragen, ich mache das mit einem Perlscript

Gruss

Alex
 
Ich arbeite in Scripts auch immer mit tr und cut. Damit kann man wunderbar bestimmte Sachen aus Dateien herausfiltern. Anders geht es ja IMHO in deinem Fall auch nicht.

Edit:
@below: Und wie sieht so ein Script aus?
 
Für Draytek Router:

Code:
#!/usr/bin/perl -w
use Net::Telnet ();
use strict;

my $username = 'admin';
my $passwd = 'mein Passwort';
my @lines;
my $t = new Net::Telnet (Timeout => 10);

$t->open("192.168.1.1");
$t->waitfor ('/Password: $/');
$t->print ("$passwd");
$t->waitfor ('/vigor2200> /');
@lines = $t->cmd('log -ct');

while (@lines) {
   if (scalar (pop @lines) =~ /Own IP Address : ([0-9\.]*)/)
   {
      print "$1\n";
      last;
   }
}
 
Radiohead schrieb:
@below: Und wie sieht so ein Script aus?
Das täte mich aber auch interessieren.
Edit: ich bin einfach zu langsam, danke below!

Übrigens: super schönes Tutorial (Remote Acces auf den Mac) auf deiner Seite, das muss ich unbedingt mal ausprobieren, wollte schon lange so was haben, war aber zu faul, eine Lösung zu suchen :D.
 
sheep schrieb:
Übrigens: super schönes Tutorial (Remote Acces auf den Mac) auf deiner Seite, das muss ich unbedingt mal ausprobieren, wollte schon lange so was haben, war aber zu faul, eine Lösung zu suchen :D.

Danke. Bin gerade dabei ein OpenVPN Tutorial mit Zertifikaten in Verbindung mit Linksys Routern zu schreiben - kommt bald online. Das ist sogar die bessere Loesung. Jetzt melde ich mich via OpenVPN an, kann dann meinen Mac via etherwake aufwecken und dann ueber VNC auf ihn zugreifen :)

@below: Danke. Werde mal schauen, ob ich das fuer meinen Linksys umbauen kann...
 
Radiohead schrieb:
Ich arbeite in Scripts auch immer mit tr und cut. Damit kann man wunderbar bestimmte Sachen aus Dateien herausfiltern. Anders geht es ja IMHO in deinem Fall auch nicht.

Edit:
@below: Und wie sieht so ein Script aus?
So in etwa:
"Gehe auf 192.168.1.1 und hole den Text nach --externe IP ist:--- raus"
:D
 
sheep schrieb:
...
Wichtig: es muss im Terminal sein, graphische Tools kann ich nicht brauchen, ist für ein Script.
Täusche ich mich, oder geht es um eine Update Skript für DynDNS?
Falls ja, soll das nur gelegentlich laufen oder geht es um laufende Updates?
 
Ein etwas robusteres Script basierend auf einem regulären Ausdruck.
Code:
#!/bin/sh
curl -s checkip.dyndns.org | \
grep -oEe "([0-9]{1,3}\.){3}[0-9]{1,3}" | \
head -1
...und checkip.dyndns.org schüttet nur 2 Zeilen Code aus, ganz im Gegensatz zu den 8K von whatismyip.com

Aus einem anderen Forum die Hardcore-Fassung:
Code:
#!/bin/sh
#
# Script for getting an external WAN IP
#

URLS[0]="http://checkip.dyndns.org"
URLS[1]="http://whatismyip.com"
URLS[2]="http://www.whatismyipaddress.com"
URLS[3]="http://ipid.shat.net"
URLS[4]="http://www.edpsciences.com/htbin/ipaddress"
URLS[5]="http://www.showmyip.com"

for URL in ${URLS[@]}
do
       THIS=${URL}
       IP=`curl -s "${THIS}" | tr -cs '[0-9\.]' '\012' \
               | awk -F'.' 'NF==4 && $1>0 && $1<256 && $2<256 && $3<256 && $4<256 && !/\.\./' | uniq`
       if [ $? == 0 ]; then
               IP=`echo $IP | awk '{print $1}'`
               echo "Your WAN IP Address is: $IP"
               exit
       fi
done
 
Zuletzt bearbeitet:
Checkt auch mal die seite:
 
Zurück
Oben Unten