1

我怎样才能只获得 IP 以及它是哪个接口 IP?这样我就可以保留记录文件,例如 realtime.ini

1 - 测试.sh

#!/bin/bash
ipstring ='inet (.*)'

for i in $(ip addr);
do
        echo $i #on found it write down to my realtime.ini as a list for future query
done

2 - 实时.ini

em1,192.168.1.2
lo,127.0.0.1
wlan0,<not found>

跟进:仅针对单个 ip:$ ifconfig eth0 | grep 'inet 地址:' | 切-d:-f2 | awk '{ 打印 $1}' 192.168.1.2

4

2 回答 2

1

if you install moreutils package, you can use handy ifdata command:

for INTF_PATH in /sys/class/net/* # list all interfaces
do
    INTF=$(basename $INTF_PATH) # interface name
    echo "$INTF,$(ifdata -pa $INTF)" # interface name and address
done

example output for 5 interfaces, while only eth0 and lo are up:

eth0,123.234.10.12
lo,127.0.0.1
vboxnet0,NON-IP
wlan0,NON-IP
wlan1,NON-IP
于 2011-10-18T11:06:04.363 回答
1

这不是非常优雅,bash 也不是,但是如果你同时拥有 awk 和 sed,你可以执行以下操作:

ifconfig | awk 'BEGIN { FS = "\n"; RS = "" } { print $1 $2 }' | sed -e 's/ .*inet addr:/,/' -e 's/ .*//'

我也不会打赌这会非常便携,所以也许有人有更好的答案。

于 2011-10-18T11:03:21.293 回答