Ich suche nach einer Befehlszeilenlösung, die mir die primäre (erste) IP-Adresse des localhost (mit Ausnahme von 127.0.0.1) zurückgibt
Die Lösung sollte zumindest für Linux (Debian und RedHat) und OS X 10.7+ funktionieren
Mir ist bekannt, dass ifconfig
für beide verfügbar ist, aber die Ausgabe zwischen diesen Plattformen nicht so konsistent ist.
Verwenden Sie grep
, um die IP-Adresse aus ifconfig
zu filtern:
ifconfig | grep -Eo 'inet (addr:)?([0-9]*\.){3}[0-9]*' | grep -Eo '([0-9]*\.){3}[0-9]*' | grep -v '127.0.0.1'
Oder mit sed
:
ifconfig | sed -En 's/127.0.0.1//;s/.*inet (addr:)?(([0-9]*\.){3}[0-9]*).*/\2/p'
Wenn Sie nur an bestimmten Schnittstellen, wlan0, eth0 usw. interessiert sind, dann:
ifconfig wlan0 | ...
Sie können den Befehl in Ihrem .bashrc
als Alias für create Ihren eigenen Befehl namens myip
verwenden.
alias myip="ifconfig | sed -En 's/127.0.0.1//;s/.*inet (addr:)?(([0-9]*\.){3}[0-9]*).*/\2/p'"
Ein viel einfacherer Weg ist hostname -I
(hostname -i
für ältere Versionen von hostname
, aber siehe Kommentare). Dies ist jedoch nur unter Linux möglich.
Für Linux-Maschinen (nicht OS X):
hostname --ip-address
Folgendes funktioniert unter Linux, aber nicht unter OSX.
Dies ist überhaupt nicht von DNS abhängig und funktioniert auch, wenn /etc/hosts
nicht richtig eingestellt ist (1
ist eine Abkürzung für 1.0.0.0
):
ip route get 1 | awk '{print $NF;exit}'
oder vermeiden Sie awk
und verwenden Sie das öffentliche DNS von Google unter 8.8.8.8
, um offensichtliche Informationen zu erhalten:
ip route get 8.8.8.8 | head -1 | cut -d' ' -f8
Ein weniger zuverlässiger Weg: (siehe Kommentar unten)
hostname -I | cut -d' ' -f1
Für eine stärkere Konfiguration mit vielen Schnittstellen und vielen konfigurierten IPs für jede Schnittstelle habe ich ein pure bash-Skript (nicht auf 127.0.0.1
) geschrieben, um die richtige Schnittstelle zu finden. Und ip, basierend auf default route
. Ich poste dieses Skript ganz unten in dieser Antwort.
Da beide Betriebssysteme standardmäßig bash installiert haben, gibt es einen Bash-Tipp für Mac und Linux:
Das Gebietsschema-Problem wird durch die Verwendung von LANG=C
verhindert:
myip=
while IFS=$': \t' read -a line ;do
[ -z "${line%inet}" ] && ip=${line[${#line[1]}>4?1:2]} &&
[ "${ip#127.0.0.1}" ] && myip=$ip
done< <(LANG=C /sbin/ifconfig)
echo $myip
Minimal:
getMyIP() {
local _ip _line
while IFS=$': \t' read -a _line ;do
[ -z "${_line%inet}" ] &&
_ip=${_line[${#_line[1]}>4?1:2]} &&
[ "${_ip#127.0.0.1}" ] && echo $_ip && return 0
done< <(LANG=C /sbin/ifconfig)
}
Einfache Verwendung:
getMyIP
192.168.1.37
getMyIP() {
local _ip _myip _line _nl=$'\n'
while IFS=$': \t' read -a _line ;do
[ -z "${_line%inet}" ] &&
_ip=${_line[${#_line[1]}>4?1:2]} &&
[ "${_ip#127.0.0.1}" ] && _myip=$_ip
done< <(LANG=C /sbin/ifconfig)
printf ${1+-v} $1 "%s${_nl:0:$[${#1}>0?0:1]}" $_myip
}
Verwendungszweck:
getMyIP
192.168.1.37
oder dieselbe Funktion ausführen, jedoch mit einem Argument:
getMyIP varHostIP
echo $varHostIP
192.168.1.37
set | grep ^varHostIP
varHostIP=192.168.1.37
Nota: Ohne Argument wird diese Funktion auf STDOUT, die IP und ein Newline ausgegeben. Mit einem Argument wird nichts gedruckt, aber eine als Argument genannte Variable wird erstellt und enthält IP ohne Neue Zeile.
Nota2: Dies wurde unter Debian, LaCie und NAS und MaxOs getestet. Wenn dies in Ihrer Umgebung nicht funktioniert, bin ich sehr an Feedback interessiert!
(Nicht gelöscht, da auf sed
basiert, nicht auf bash
.)
Warnung: Es gibt ein Problem mit Gebietsschemas!
Schnell und klein:
myIP=$(ip a s|sed -ne '/127.0.0.1/!{s/^[ \t]*inet[ \t]*\([0-9.]\+\)\/.*$/\1/p}')
Explodiert (Arbeit auch;)
myIP=$(
ip a s |
sed -ne '
/127.0.0.1/!{
s/^[ \t]*inet[ \t]*\([0-9.]\+\)\/.*$/\1/p
}
'
)
Bearbeiten:
Wie! Dies scheint auf Mac OS... nicht zu funktionieren.
Ok, das scheint auf Mac OS genauso zu funktionieren wie auf meinem Linux:
myIP=$(LANG=C /sbin/ifconfig | sed -ne $'/127.0.0.1/ ! { s/^[ \t]*inet[ \t]\\{1,99\\}\\(addr:\\)\\{0,1\\}\\([0-9.]*\\)[ \t\/].*$/\\2/p; }')
gesplittet:
myIP=$(
LANG=C /sbin/ifconfig |
sed -ne $'/127.0.0.1/ ! {
s/^[ \t]*inet[ \t]\\{1,99\\}\\(addr:\\)\\{0,1\\}\\([0-9.]*\\)[ \t\/].*$/\\2/p;
}')
Dieses Skript findet zuerst Ihre Standardroute und Schnittstelle, sucht dann nach dem lokalen IP-Matching-Netzwerk von Gateway und füllt die Variablen auf. Die letzten beiden Zeilen werden gerade gedruckt, etwa:
Interface : en0
Local Ip : 10.2.5.3
Gateway : 10.2.4.204
Net mask : 255.255.252.0
Run on mac : true
oder
Interface : eth2
Local Ip : 192.168.1.31
Gateway : 192.168.1.1
Net mask : 255.255.255.0
Run on mac : false
Nun da ist es:
#!/bin/bash
runOnMac=false
int2ip() { printf ${2+-v} $2 "%d.%d.%d.%d" \
$(($1>>24)) $(($1>>16&255)) $(($1>>8&255)) $(($1&255)) ;}
ip2int() { local _a=(${1//./ }) ; printf ${2+-v} $2 "%u" $(( _a<<24 |
${_a[1]} << 16 | ${_a[2]} << 8 | ${_a[3]} )) ;}
while IFS=$' :\t\r\n' read a b c d; do
[ "$a" = "usage" ] && [ "$b" = "route" ] && runOnMac=true
if $runOnMac ;then
case $a in
gateway ) gWay=$b ;;
interface ) iFace=$b ;;
esac
else
[ "$a" = "0.0.0.0" ] && [ "$c" = "$a" ] && iFace=${d##* } gWay=$b
fi
done < <(/sbin/route -n 2>&1 || /sbin/route -n get 0.0.0.0/0)
ip2int $gWay gw
while read lhs rhs; do
[ "$lhs" ] && {
[ -z "${lhs#*:}" ] && iface=${lhs%:}
[ "$lhs" = "inet" ] && [ "$iface" = "$iFace" ] && {
mask=${rhs#*netmask }
mask=${mask%% *}
[ "$mask" ] && [ -z "${mask%0x*}" ] &&
printf -v mask %u $mask ||
ip2int $mask mask
ip2int ${rhs%% *} ip
(( ( ip & mask ) == ( gw & mask ) )) &&
int2ip $ip myIp && int2ip $mask netMask
}
}
done < <(/sbin/ifconfig)
printf "%-12s: %s\n" Interface $iFace Local\ Ip $myIp \
Gateway $gWay Net\ mask $netMask Run\ on\ mac $runOnMac
auf linux
hostname -I
auf macOS
ipconfig getifaddr en0
Beachten Sie, dass hostname -I
mehrere Adressen in unzuverlässiger Reihenfolge zurückgeben kann (siehe man hostname
). Aber für mich gibt es einfach 192.168.1.X
zurück, was Sie wollten.
Sie können dies auch versuchen, obwohl es Ihnen vielleicht nur 127.0.0.1
sagt
hostname -i
oder
hostname -I
$ ip -o route get to 8.8.8.8 | sed -n 's/.*src \([0-9.]\+\).*/\1/p'
192.168.8.16
Der korrekte Weg, um Netzwerkinformationen abzufragen, verwendet ip
:
-o
einzeilige Ausgaberoute get to
liefert die tatsächliche Kernel-Route zu einem Ziel8.8.8.8
Google IP, kann jedoch die tatsächliche IP-Adresse verwenden, die Sie erreichen möchtenz.B. ip
Ausgabe:
8.8.8.8 via 192.168.8.254 dev enp0s25 src 192.168.8.16 uid 1000 \ cache
Um die src
ip zu extrahieren, ist sed
die hellste und am besten mit regex unterstützte Unterstützung:
-n
standardmäßig nicht ausgegeben's/pattern/replacement/p'
nur Muster und Ausdruck ersetzen.*src \([0-9.]\+\).*
stimmt mit der von dem Kernel verwendeten src-IP überein, um 8.8.8.8
zu erreichenz.B. Endausgabe:
192.168.8.16
Ich denke, dass keine der vorhergehenden Antworten für mich gut genug ist, da sie nicht in einer aktuellen Maschine funktionieren (Gentoo 2018).
Probleme, die ich bei den vorhergehenden Antworten gefunden habe:
ifconfig
, das veraltet ist, und zum Beispiel keine Mehrfach-IPs auflisten;awk
für eine einfache Aufgabe, die sed besser bewältigen kann;ip route get 1
ist unklar und ist eigentlich ein Alias für ip route get to 1.0.0.0
hostname
, der nicht die Option -I
in allen Geräten hat und in meinem Fall 127.0.0.1
zurückgibt.Sie können die IP-Adresse der Version 4 von eth0 auch erhalten, indem Sie diesen Befehl in Linux verwenden
/sbin/ip -4 -o addr show dev eth0| awk '{split($4,a,"/");print a[1]}'
Ausgabe wird so sein
[[email protected] Sathish]# /sbin/ip -4 -o addr show dev eth0| awk '{split($4,a,"/");print a[1]}'
192.168.1.22
Dadurch wird die Schnittstelle mit der Standardroute verknüpft
NET_IF=`netstat -rn | awk '/^0.0.0.0/ {thif=substr($0,74,10); print thif;} /^default.*UG/ {thif=substr($0,65,10); print thif;}'`
Rufen Sie mithilfe der oben erkannten Schnittstelle die IP-Adresse ab.
NET_IP=`ifconfig ${NET_IF} | grep -Eo 'inet (addr:)?([0-9]*\.){3}[0-9]*' | grep -Eo '([0-9]*\.){3}[0-9]*' | grep -v '127.0.0.1'`
uname -a
Darwin-Laptop 14.4.0 Darwin-Kernel-Version 14.4.0: Do May 28 11:35:04 PDT 2015; root: xnu-2782.30.5 ~ 1/RELEASE_X86_64 x86_64
echo $NET_IF
en5
echo $NET_IP
192.168.0.130
uname -a
Linux dev-cil.medfx.local 2.6.18-164.el5xde 1 SMP Do Sep 3 04:03:03 EDT 2009 x86_64 x86_64 x86_64 GNU/Linux
echo $NET_IF
eth0
echo $NET_IP
192.168.46.10
Andere Methoden verwenden Sie können einen Konflikt eingeben, bei dem mehrere IP-Adressen im System definiert sind .. Diese Zeile erhält immer die standardmäßig verwendete IP-Adresse.
ip route get 8.8.8.8 | head -1 | awk '{print $7}'
Ich extrahiere meinen Kommentar zu dieser Antwort:
ip route get 1 | sed -n 's/^.*src \([0-9.]*\) .*$/\1/p'
Es basiert auf der Antwort von @CollinAnderson, die in meinem Fall nicht funktioniert hat.
Primäre Netzwerkschnittstelle IP
ifconfig `ip route | grep default | head -1 | sed 's/\(.*dev \)\([a-z0-9]*\)\(.*\)/\2/g'` | grep -oE "\b([0-9]{1,3}\.){3}[0-9]{1,3}\b" | head -1
Ich muss der Antwort von Collin Anderson hinzufügen, dass diese Methode auch berücksichtigt, wenn Sie zwei Schnittstellen haben und beide als aktiv angezeigt werden.
ip route get 1 | awk '{print $NF;exit}'
Ich habe an einer Anwendung mit Raspberry Pi gearbeitet und brauchte die IP-Adresse, die tatsächlich verwendet wurde, nicht nur, ob sie aktiv war oder nicht. Die meisten anderen Antworten geben beide IP-Adressen zurück, was für mein Szenario ohnehin nicht unbedingt hilfreich ist.
Der kürzeste Weg, um Ihre lokale IPv4-Adresse in Ihrem Linux-System abzurufen:
hostname -I | awk '{print $1}'
Für alles gibt es ein Knotenpaket. Es ist plattformübergreifend und einfach zu bedienen.
$ npm install --global internal-ip-cli
$ internal-ip
fe80::1
$ internal-ip --ipv4
192.168.0.3
Dies ist ein umstrittener Ansatz, aber die Verwendung von npm für Werkzeuge wird beliebter, egal ob es nun so ist oder nicht.
Eine weitere ifconfig
-Variante, die sowohl unter Linux als auch unter OSX funktioniert:
ifconfig | grep "inet " | cut -f2 -d' '
Ich ging durch viele Links (StackExchange, AskUbuntu, StackOverflow usw.) und entschied mich dazu, die besten Lösungen in einem Shell-Skript zusammenzufassen.
Meiner Meinung nach sind diese beiden QAs die besten:
Wie kann ich meine externe IP-Adresse in einem Shell-Skript erhalten? https://unix.stackexchange.com/q/22615
Wie finde ich meine interne IP-Adresse? https://askubuntu.com/a/604691
Hier ist meine Lösung, die auf einigen Ideen basiert, die von rsp in seinem Repository ( https://github.com/rsp/scripts/ ) veröffentlicht wurden.
Einige von Ihnen könnten sagen, dass dieses Skript für so einfache Aufgaben extrem groß ist, aber ich möchte es so einfach und flexibel wie möglich machen. Es unterstützt einfache Konfigurationsdateien, wodurch die Standardwerte neu definiert werden können.
Es wurde erfolgreich unter Cygwin, MINGW und Linux (Red Hat) getestet.
Interne IP-Adresse anzeigen
myip -i
Externe IP-Adresse anzeigen
myip -e
Quellcode, auch verfügbar unter dem Link: https://github.com/ildar-shaimordanov/tea-set/blob/master/home/bin/myip . Ein Beispiel für eine Konfigurationsdatei befindet sich neben dem Hauptskript.
#!/bin/bash
# =========================================================================
#
# Getting both internal and external IP addresses used for outgoing
# Internet connections.
#
# Internal IP address is the IP address of your computer network interface
# that would be used to connect to Internet.
#
# External IP address is the IP address that is visible by external
# servers that you connect to over Internet.
#
# Copyright (C) 2016 Ildar Shaimordanov
#
# =========================================================================
# Details of the actual implementation are based on the following QA:
#
# How can I get my external IP address in a Shell script?
# https://unix.stackexchange.com/q/22615
#
# How do I find my internal ip address?
# https://askubuntu.com/a/604691
# =========================================================================
for f in \
"$( dirname "$0" )/myip.conf" \
~/.myip.conf \
/etc/myip.conf
do
[ -f "$f" ] && {
. "$f"
break
}
done
# =========================================================================
show_usage() {
cat - <<HELP
USAGE
$( basename "$0" ) [OPTIONS]
DESCRIPTION
Display the internal and external IP addresses
OPTIONS
-i Display the internal IP address
-e Display the external IP address
-v Turn on verbosity
-h Print this help and exit
HELP
exit
}
die() {
echo "$( basename "$0" ): [email protected]" >&2
exit 2
}
# =========================================================================
show_internal=""
show_external=""
show_verbose=""
while getopts ":ievh" opt
do
case "$opt" in
i )
show_internal=1
;;
e )
show_external=1
;;
v )
show_verbose=1
;;
h )
show_usage
;;
\? )
die "Illegal option: $OPTARG"
;;
esac
done
if [ -z "$show_internal" -a -z "$show_external" ]
then
show_internal=1
show_external=1
fi
# =========================================================================
# Use Google's public DNS to resolve the internal IP address
[ -n "$TARGETADDR" ] || TARGETADDR="8.8.8.8"
# Query the specific URL to resolve the external IP address
[ -n "$IPURL" ] || IPURL="ipecho.net/plain"
# Define explicitly $IPCMD to gather $IPURL using another tool
[ -n "$IPCMD" ] || {
if which curl >/dev/null 2>&1
then
IPCMD="curl -s"
Elif which wget >/dev/null 2>&1
then
IPCMD="wget -qO -"
else
die "Neither curl nor wget installed"
fi
}
# =========================================================================
resolveip() {
{
gethostip -d "$1" && return
getent ahostsv4 "$1" \
| grep RAW \
| awk '{ print $1; exit }'
} 2>/dev/null
}
internalip() {
[ -n "$show_verbose" ] && printf "Internal: "
case "$( uname | tr '[:upper:]' '[:lower:]' )" in
cygwin* | mingw* | msys* )
netstat -rn \
| grep -w '0.0.0.0' \
| awk '{ print $4 }'
return
;;
esac
local t="$( resolveip "$TARGETADDR" )"
[ -n "$t" ] || die "Cannot resolve $TARGETADDR"
ip route get "$t" \
| awk '{ print $NF; exit }'
}
externalip() {
[ -n "$show_verbose" ] && printf "External: "
eval $IPCMD "$IPURL" $IPOPEN
}
# =========================================================================
[ -n "$show_internal" ] && internalip
[ -n "$show_external" ] && externalip
# =========================================================================
# EOF
Nicht sicher, ob dies in allen Betriebssystemen funktioniert, probieren Sie es aus.
ifconfig | awk -F"[ :]+" '/inet addr/ && !/127.0/ {print $4}'
ifconfig | grep 'inet ' | grep -v '127.0.0.1' | awk '{print $2}'
ip addr show | grep -E '^\s*inet' | grep -m1 global | awk '{ print $2 }' | sed 's|/.*||'
Ich benutze nur Network Interface Names , mein benutzerdefinierter Befehl ist
[[ $(ip addr | grep enp0s25) != '' ]] && ip addr show dev enp0s25 | sed -n -r '[email protected]*inet (.*)/.*brd.*@\[email protected]' || ip addr show dev eth0 | sed -n -r '[email protected]*inet (.*)/.*brd.*@\[email protected]'
in meinem eigenen Notizbuch
[[email protected] ~]$ cat /etc/redhat-release
CentOS Linux release 7.2.1511 (Core)
[[email protected] ~]$ [[ $(ip addr | grep enp0s25) != '' ]] && ip addr show dev enp0s25 | sed -n -r '[email protected]*inet (.*)/.*brd.*@\[email protected]' || ip addr show dev eth0 | sed -n -r '[email protected]*inet (.*)/.*brd.*@\[email protected]'
192.168.2.221
[[email protected] ~]$
wenn die Netzwerkschnittstelle jedoch mindestens eine IP-Adresse besitzt, werden alle IP-Adressen angezeigt
zum Beispiel
Ubuntu 16.10
[email protected]:~# sed -r -n '[email protected]"@@g;[email protected]^VERSION=(.*)@\[email protected]' /etc/os-release
16.04.1 LTS (Xenial Xerus)
[email protected]:~# [[ $(ip addr | grep enp0s25) != '' ]] && ip addr show dev enp0s25 | sed -n -r '[email protected]*inet (.*)/.*brd.*@\[email protected]' || ip addr show dev eth0 | sed -n -r '[email protected]*inet (.*)/.*brd.*@\[email protected]'
178.62.236.250
[email protected]:~#
Debian Jessie
[email protected]:~# sed -r -n '[email protected]"@@g;[email protected]^PRETTY_NAME=(.*)@\[email protected]' /etc/os-release
Debian GNU/Linux 8 (jessie)
[email protected]:~# [[ $(ip addr | grep enp0s25) != '' ]] && ip addr show dev enp0s25 | sed -n -r '[email protected]*inet (.*)/.*brd.*@\[email protected]' || ip addr show dev eth0 | sed -n -r '[email protected]*inet (.*)/.*brd.*@\[email protected]'
192.81.222.54
[email protected]:~#
CentOS 6,8
[[email protected] ~]# cat /etc/redhat-release
CentOS release 6.8 (Final)
[[email protected] ~]# [[ $(ip addr | grep enp0s25) != '' ]] && ip addr show dev enp0s25 | sed -n -r '[email protected]*inet (.*)/.*brd.*@\[email protected]' || ip addr show dev eth0 | sed -n -r '[email protected]*inet (.*)/.*brd.*@\[email protected]'
162.243.17.224
10.13.0.5
[[email protected] ~]# ip route get 1 | awk '{print $NF;exit}'
162.243.17.224
[[email protected] ~]#
Fedora 24
[[email protected] ~]# cat /etc/redhat-release
Fedora release 24 (Twenty Four)
[[email protected] ~]# [[ $(ip addr | grep enp0s25) != '' ]] && ip addr show dev enp0s25 | sed -n -r '[email protected]*inet (.*)/.*brd.*@\[email protected]' || ip addr show dev eth0 | sed -n -r '[email protected]*inet (.*)/.*brd.*@\[email protected]'
104.131.54.185
10.17.0.5
[[email protected] ~]# ip route get 1 | awk '{print $NF;exit}'
104.131.54.185
[[email protected] ~]#
Es scheint, als wäre der Befehl ip route get 1 | awk '{print $NF;exit}'
von link genauer, was außerdem kürzer ist.
Angenommen, Sie benötigen Ihre primäre public IP-Adresse, wie sie vom Rest der Welt gesehen wird, versuchen Sie es mit einer der folgenden:
wget http://ipecho.net/plain -O - -q
curl http://icanhazip.com
curl http://ifconfig.me/ip
Funktioniert auf Mac, Linux und in Docker Containern:
$ hostname --ip-address 2> /dev/null || (ifconfig | sed -En 's/127.0.0.1//;s/.*inet (addr:)?(([0-9]*\.){3}[0-9]*).*/\2/p' | awk '{print
$ 1; Ausfahrt}')
Funktioniert auch auf Makefile
als:
LOCAL_Host := ${Shell hostname --ip-address 2> /dev/null || (ifconfig | sed -En 's/127.0.0.1//;s/.*inet (addr:)?(([0-9]*\.){3}[0-9]*).*/\2/p' | awk '{print $1; exit}')}
Findet eine IP-Adresse dieses Computers in einem Netzwerk, das ein Standard-Gateway ist (z. B. alle virtuellen Netzwerke, Docker-Bridges), z. Internet-Gateway, WLAN-Gateway, Ethernet
ip route| grep $(ip route |grep default | awk '{ print $5 }') | grep -v "default" | awk '/scope/ { print $9 }'
Funktioniert unter Linux.
Prüfung:
➜ ~ ip route| grep $(ip route |grep default | awk '{ print $5 }') | grep -v "default" | awk '/scope/ { print $9 }'
192.168.0.114
➜ reverse-networking git:(feature/type-local) ✗ ifconfig wlp2s0
wlp2s0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.0.114 netmask 255.255.255.0 broadcast 192.168.0.255
inet6 fe80::d3b9:8e6e:caee:444 prefixlen 64 scopeid 0x20<link>
ether ac:x:y:z txqueuelen 1000 (Ethernet)
RX packets 25883684 bytes 27620415278 (25.7 GiB)
RX errors 0 dropped 27 overruns 0 frame 0
TX packets 7511319 bytes 1077539831 (1.0 GiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
Wenn Sie die Netzwerkschnittstelle kennen (Eth0, WLAN, Tun0 usw.):
ifconfig eth0 | grep addr: | awk '{ print $2 }' | cut -d: -f2
Wenn Sie npm
und node
installiert haben: npm install -g ip && node -e "const ip = require('ip'); console.log(ip.address())"
Beachten Sie auf einem Mac Folgendes:
scutil --nwi | grep -Eo '[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}'
ifconfig $(netstat -rn | grep -E "^default|^0.0.0.0" | head -1 | awk '{print $NF}') | grep 'inet ' | awk '{print $2}' | grep -Eo '([0-9]*\.){3}[0-9]*'
ifconfig | grep "inet addr:" | grep -v "127.0.0.1" | grep -Eo '[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}' | head -1
Für Linux benötigen Sie diesen Befehl:
ifconfig $1|sed -n 2p|awk '{ print $2 }'|awk -F : '{ print $2 }'
geben Sie dies in Ihre Shell ein und Sie kennen einfach Ihre IP.
Dies ist einfacher zu lesen: ifconfig | grep 'inet addr:' |/usr/bin/awk '{print $2}' | tr -d addr: