从“ip route”跨平台获取本地IP地址

nik*_*kip 2 ip sed awk shell-script

我正在尝试使用跨平台命令提取本地 IP 地址。直到今天,我还在使用这个命令:

ip route get 1 | awk '{print $NF;exit}'
Run Code Online (Sandbox Code Playgroud)

但是在 Fedora 27 上不起作用,因为输出ip route get 1是:

0.0.0.1 via 192.168.1.1 dev en1  src 192.168.0.229 uid 1000
    cache
Run Code Online (Sandbox Code Playgroud)

我正在获取1000IP 地址。在我尝试过的所有其他系统中,输出始终是:

0.0.0.1 via 192.168.1.1 dev en1  src 192.168.0.229
Run Code Online (Sandbox Code Playgroud)

我也尝试使用此命令获得相同的结果:

ip route get 255.255.255.255 | sed -n '/src/ s/.*src //p'
Run Code Online (Sandbox Code Playgroud)

Ste*_*itt 6

要打印紧随其后的地址src(假设所有相关部分都在同一行...):

ip route get 1 | sed 's/^.*src \([^ ]*\).*$/\1/;q'
Run Code Online (Sandbox Code Playgroud)