Jedes mal, wenn ich meine IP Adresse wissen will, gebe ich bei einer Suchmaschine “my ip address” ein und klicke auf eines der Ergebnisse. Dies ist nicht sehr elegant. Auf einem Server ohne Browser ist dies gar nicht möglich. Deshalb habe ich ein Script geschrieben, welches mir meine IP Adressen (IPv4 und IPv6) anzeigt.
Download
Das Script kann auf GitHub in meinem Scripts Repository herungergeladen werden: myip. Das Script kann so installiert werden:
$ sudo chmod 755 /usr/local/bin/myip
Ist /usr/local/bin in der $PATH Variable, kann das Script aus der Shell mittels myip aufgerufen werden.
Das Script sieht so aus:
#IPURL=”https://icanhazip.com/ip”
IPURL=”https://motd.ch/ip.php”
print_usage(){
cat << EOI Displays IP addresses of the current host used for internet connections. Usage: myip [options] Options: -6 Show only IPv6 addresses (public ip address by default). -4 Show only IPv4 addresses (public ip address by default). -h Show usage help. -l Show local insted of public addresses. No options produces a more verbose output. EOI } print_public_ipv4_address(){ echo “$(curl -s -4 -L $IPURL || echo “”)” } print_public_ipv6_address(){ echo “$(curl -s -6 -L $IPURL || echo “”)” } print_local_ipv4_address(){ echo “$(curl -s -4 -L –write-out %{local_ip} $IPURL -o /dev/null || echo “”)” } print_local_ipv6_address(){ echo “$(curl -s -6 -L –write-out %{local_ip} $IPURL -o /dev/null || echo “”)” } main(){ while getopts 46hlv name do case “$name” in 4) flag_4=1 ;; 6) flag_6=1 ;; h) print_usage exit ;; l) flag_l=1 ;; ?) print_usage >&2
exit 2
;;
esac
done
if [[ -n $flag_l && -n $flag_4 ]]
then
print_local_ipv4_address
fi
if [[ -n $flag_l && -n $flag_6 ]]
then
print_local_ipv6_address
fi
if [[ -z $flag_l && -n $flag_4 ]]
then
print_public_ipv4_address
fi
if [[ -z $flag_l && -n $flag_6 ]]
then
print_public_ipv6_address
fi
if [[ -z $flag_l && -z $flag_4 && -z $flag_6 ]]
then
PUBLIC_IPV4_ADDRESS=$(print_public_ipv4_address)
PUBLIC_IPV6_ADDRESS=$(print_public_ipv6_address)
echo -e “Public IPv4 address: ${PUBLIC_IPV4_ADDRESS:–}”
echo -e “Public IPv6 address: ${PUBLIC_IPV6_ADDRESS:–}”
LOCAL_IPV4_ADDRESS=$(print_local_ipv4_address)
LOCAL_IPV6_ADDRESS=$(print_local_ipv6_address)
echo -e “Local IPv4 address: ${LOCAL_IPV4_ADDRESS:–}”
echo -e “Local IPv6 address: ${LOCAL_IPV6_ADDRESS:–}”
echo “”
if [[ -n “$PUBLIC_IPV4_ADDRESS” && -n “$LOCAL_IPV4_ADDRESS” ]]
then
if [[ “$PUBLIC_IPV4_ADDRESS” != “$LOCAL_IPV4_ADDRESS” ]]
then
echo “IPv4: NAT”
else
echo “IPv4: No NAT”
fi
fi
if [[ -n “$PUBLIC_IPV6_ADDRESS” && -n “$LOCAL_IPV6_ADDRESS” ]]
then
if [[ “$PUBLIC_IPV6_ADDRESS” != “$LOCAL_IPV6_ADDRESS” ]]
then
echo “IPv6: NAT”
else
echo “IPv6: No NAT”
fi
fi
fi
}
Funktionsweise
Das Script ruft die Webseite https://motd.ch/ip.php auf, welches einem die IP Adresse zurück gibt, mit welche die Seite aufgerufen wurde. Je nach dem, ob IPv4 oder IPv6 genutzt wird, wird die entsprechende IP Adresse angezeigt. Beispielsweise bekommt man so seine IPv6 Adresse:
2a23:523:DEAD:BEEF:F00:BA5:23:05
Das kleine PHP Script ip.php ist auch im Scripts Repository zu finden: ip.php. So kann jeder einfach seine eigene Version hosten. Man kann im myip Script aber auch eine fremde Seite wie https://icanhazip.com/ip eingragen.
Funktionen
Standardmässig zeigt das Script die öffentliche und die lokal verwendete IPv4 und IPv6 Adresse an. Zudem wird angezeigt, ob NAT verwendet wird oder nicht.
Public IPv4 address: 5.23.42.66
Public IPv6 address: 2a23:523:DEAD:BEEF:F00:BA5:23:05
Local IPv4 address: 10.5.23.1
Local IPv6 address: 2a23:523:DEAD:BEEF:F00:BA5:23:05
IPv6: No NAT
Das Script bietet folgende Optionen
- -6: Nur IPv6 Adressen anzeigen
- -4: Nur IPv4 Adressen anzeigen
- -h: Hilfe anzeigen
- -l: Nur lokal verwendete Adressen anzeigen
So kann beispielsweise nur die lokal verwendete IPv4 Adresse angezeigt werden:
10.5.23.1
Jetzt kann man ganz einfach seine IP Adresse und weitere zusätzliche Informationen herausfinden, ohne den Browser zu öffnen. Toll 🙂
Links und weitere Informationen
- Mein Scripts Repository auf GitHub: https://github.com/mindfuckup/Scripts
Was seu de dr unterschid zu “ifconfig”? Aso i meine entweder bini komplett näb dr spur uder ja….
Hey
Ich hoffe du verstehst jetzt den Unterschied!? Betrachtet man die Ausgabe des Tools, sollte dies eigentlich klar sein.
Gruss