Schrift
Wiki:Tipp zum Debugging: use Data::Dumper; local $Data::Dumper::Useqq = 1; print Dumper \@var;
[thread]4414[/thread]

Die IP-Adresse meines Routers...: ...in der Kommandozeile angezeigt



<< >> 10 Einträge, 1 Seite
chrim
 2006-03-30 14:36
#37195 #37195
User since
2006-03-30
4 Artikel
BenutzerIn
[Homepage] [default_avatar]
Hallo zusammen,

ich habe folgendes Skript geschrieben, um die IP-Adresse meines Routers im Internet auf der Kommandozeile anzeigen zu lassen, und möchte es gerne zur Diskussion stellen:

Code: (dl )
1
2
3
4
5
6
7
8
9
#!/usr/bin/perl -w
use strict;
use LWP::Simple;

my $url = ("http://whatismyip.com/");
my $var = get($url);

$var =~ m/(\d+).(\d+).(\d+).(\d+)/;
print "Deine IP-Adresse ist: $1.$2.$3.$4\n";


Geht das auch noch anders? Leider konnte ich im Forum bislang nichts dazu finden.
nepos
 2006-03-30 16:35
#37196 #37196
User since
2005-08-17
1420 Artikel
BenutzerIn
[Homepage] [default_avatar]
Code (perl): (dl )
1
2
3
4
use strict;
use Socket;

print inet_ntoa(gethostbyname('whatismyip.com') ."\n";


Das sollte einen ganz normalen DNS-Request vom System ausloesen und dir die IP-Adresse zurueckliefern.
Bei deiner Variante siehst du natuerlich auch noch, ob das System mit dem Namen auch antwortet ;)
chrim
 2006-03-30 20:31
#37197 #37197
User since
2006-03-30
4 Artikel
BenutzerIn
[Homepage] [default_avatar]
Hallo nepos,

vielen Dank für deine Antwort. Aber mit deiner Lösung finde ich "nur" die IP-Adresse von whatismyip.com heraus. Ich möchte aber wissen, mit welcher IP-Adresse ich im Internet unterwegs, also welche IP-Adresse ich von meinem Provider erhalten habe.

BTW: Deine Lösung hat bei mir eine Fehlermeldung erzeugt, mit der ich nichts anfangen konnte:
Code: (dl )
1
2
3
4
5
#!/usr/bin/perl -w
use strict;
use Socket;

print inet_ntoa(gethostbyname('www.whatismyip.com') ." ");

Der Aufruf des Scripts gibt bei mir (MacOS X, Perl 5.8.7) folgendes aus:
Bad arg length for Socket::inet_ntoa, length is 5, should be 4

Ich musste das Skript folgendermaßen ändern, um ein Ergebnis zu erzielen:
Code: (dl )
1
2
3
4
5
6
#!/usr/bin/perl -w
use strict;
use Socket;

my $hostname = gethostbyname('whatismyip.com');
print inet_ntoa($hostname) . "\n";
</span><span style='font-family:courier'>
GwenDragon
 2006-03-30 21:08
#37198 #37198
User since
2005-01-17
14748 Artikel
Admin1
[Homepage]
user image
Du könntest auch per telnet (kommt auf den Router an) die IP abfragen.
Dubu
 2006-03-31 00:04
#37199 #37199
User since
2003-08-04
2145 Artikel
ModeratorIn + EditorIn

user image
[quote=chrim,30.03.2006, 18:31]Ich möchte aber wissen, mit welcher IP-Adresse ich im Internet unterwegs, also welche IP-Adresse ich von meinem Provider erhalten habe.[/quote]
Kann dein Router kein Wikipedia:DynDNS?
sepp
 2006-03-31 06:58
#37200 #37200
User since
2006-03-31
2 Artikel
BenutzerIn
[Homepage] [default_avatar]
Quote
Geht das auch noch anders?

Kommt ganz auf deinen Router an. Wenn er Unix spricht, dann klappt das auch mit ifconfig:

Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
use strict;
use warnings;

my $ip;

open CMD, '-|' or exec qw(/sbin/ifconfig ppp0) or die "exec failed: $!";
foreach(<CMD>)
{
$ip = $1 if m/^\s*inet addr:([0-9.]+)/;
}
close CMD;

print $ip ? "Deine IP: $ip\n" : "IP nich gefunden :-(\n";
chrim
 2006-03-31 14:44
#37201 #37201
User since
2006-03-30
4 Artikel
BenutzerIn
[Homepage] [default_avatar]
Vielen Dank an alle, für die bisherigen Antworten. Mit dem Router habe ich mich leider Missverständlich ausgedrückt. Ich meine natürlich: "Wie bekomme ich die IP-Adresse auf der Kommandozeile heraus, die mir mein Provider gibt, sobald ich mich bei ihm ins Internet einwähle?" Das muss ja nicht unbedingt über ein DSL- oder WLAN-Router passieren, es geht ja auch mit dem guten alten Kabelmodem.
Wie ich meine IP mit dem Browser herausbekomme, ist klar: Ich surfe zu whatismyip.com und da steht dann meine IP. Wie man das mit einem Perl-Skript machen kann, habe ich bereits gezeigt, nur: There is more than one way to do it. ;-)
Ich wäre an einer eleganteren Lösung als meine interessiert, vielleicht eine, die auf den Zugriff von Websites wie whatismyip.com verzichtet.
nepos
 2006-04-02 17:33
#37202 #37202
User since
2005-08-17
1420 Artikel
BenutzerIn
[Homepage] [default_avatar]
Hm, wie waehlst du dich denn ein?
Wenns am Rechner selbst ist, kannst du auch die Ausgabe von ifconfig bzw. ipconfig auswerten eventuell.
Und sorry, in meinem Code oben fehlt ne Klammer :P
Gast Gast
 2006-04-02 20:54
#37203 #37203
Quote
Hm, wie waehlst du dich denn ein?

Lax gesagt: Mit 'nem DSL-Modem und 'ner Flatrate Zuhause und auf Reisen W-LAN oder Kabelmodem.

Quote
Wenns am Rechner selbst ist, kannst du auch die Ausgabe von ifconfig bzw. ipconfig auswerten eventuell.

ifconfig gibt mir nur meine interne IP, so wie hier:
Code: (dl )
1
2
3
4
5
6
7
8
9
eth0     Protokoll:Ethernet  Hardware Adresse 00:0B:6A:33:85:2C
inet Adresse:192.168.0.117 Bcast:192.168.0.255 Maske:255.255.255.0
inet6 Adresse: fe80::20b:6aff:fe33:852c/64 Gültigkeitsbereich:Verbindung
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:20285 errors:0 dropped:0 overruns:0 frame:0
TX packets:13018 errors:0 dropped:0 overruns:0 carrier:0
Kollisionen:0 Sendewarteschlangenlänge:1000
RX bytes:27806468 (26.5 MiB) TX bytes:1109139 (1.0 MiB)
Interrupt:19 Basisadresse:0xd400


Quote
Und sorry, in meinem Code oben fehlt ne Klammer

Jupp, habe ich auch gemerkt und stillschweigend geändert. ;-)
chrim
 2006-04-04 21:08
#37204 #37204
User since
2006-03-30
4 Artikel
BenutzerIn
[Homepage] [default_avatar]
Hallo zusammen,

ich bin mit meinem Skript etwas weiter. Zumindest habe ich es geschafft, es in eine Zeile zu packen:
Code: (dl )
perl -MLWP::Simple -le 'print get("http://whatismyip.com/")=~/IP\s+is (\S+)<\//i'

Das sieht doch schon gleich viel perliger aus, oder? ;-))
<< >> 10 Einträge, 1 Seite



View all threads created 2006-03-30 14:36.