Öffentliche IP in der Kommandozeile ermitteln

Ich bin inzwischen häufiger in größeren Netzwerken unterwegs und oft ist es nötig die aktuell benutzte öffentliche IP-Adresse herauszubekommen. Klar kann man einfach im Router nachschauen, doch grade wenn viele Routing-Regeln und mehrere Internetanschlüsse existieren, muss man gelegentlich etwas länger suchen. Damit ich die Frage nach der aktuell von mir benutzten öffentlichen IP schnell beantworten kann, habe ich mir die folgende Lösung ausgedacht.

Zuerst einmal braucht man einen Webserver mit PHP. Da die kleine Aufgabe überschaubar ist, braucht es keine dicke Kiste zu sein. Webspace für 2€ im Monat mit PHP oder ein Raspberry Pi sollten auch reichen.

Auf dem Webserver legt man sich dann eine Subdomain wie beispielsweise ip.example.com an. Anschliessend packt man sich eine Datei mit dem Namen index.php udn dem folgenden Inhalt in das Wurzelverzeichnis des Webservers.

<?php if (! isset($_SERVER['HTTP_X_FORWARDED_FOR'])) {
$client_ip = $_SERVER['REMOTE_ADDR'];
} else {
$client_ip = $_SERVER['HTTP_X_FORWARDED_FOR'];}
echo $client_ip;?>

Wenn man nun die Adresse http://ip.example.com/ im Browser aufruft, sollte man nur die IP oben Links auf der “Webseite” sehen. Wenn das nicht so ist, Webserver mit PHP richtig einrichten. Wenn das so ist, geht es weiter mit dem kleinen Script, welches wir auf dem System verwenden. Eigentlich braucht man kein Script dafür, denn ein curl in der Konsole reicht aus um die IP-Anzuzeigen.

curl ip.example.com

Ich hab es doch in ein Perl-Script gepackt, damit ich es später leichter zur Hand habe und ich weniger tippen muss.

#!/usr/bin/perl
use 5.010;
use strict;
use warnings;
use LWP::Simple;
 
my $ip = get('http://ip.example.com') or die 'Unable to get IP';
say $ip;
exit 0;

Das Script habe ich unter dem Namen pubip in /usr/share/bin gespeichert und natürlich chmod +x ausführbar gemacht. Wenn ich es starten will, reicht ein Aufruf von pubip im Terminal.

Got something to say? Go for it!

*