5

我正在尝试编写一个 bash 脚本来获取我知道其 IP 地址的接口的以太网端口。我需要从 ifconfig 中获取它,但似乎无法弄清楚如何去做。有任何想法吗?

谢谢。

4

4 回答 4

7

将 127.0.0.1 替换为您要获取其接口信息的 IP 地址

ifconfig  | grep 127.0.0.1 -B1 | grep Link | cut -f 1 '-d '

如果您还想识别机器上的物理端口,请运行

ethtool -p $OUTPUT_OF_FIRST_COMMAND

它将闪烁与该接口关联的以太网卡上的灯

于 2011-02-13T19:09:32.710 回答
4

有点乱,但应该工作:

/sbin/ifconfig | grep -B1 1.2.3.4 | awk '{print $1; exit}'

或者,您可以使用ip命令,当与该-o|-oneline选项一起使用时,该命令更容易解析。例如

ip -o addr | awk '/1.2.3.4/{print $2}'
于 2011-02-13T19:15:12.093 回答
2

我可能会使用 grep:

ifconfig |grep -B1 '127.0.0.1' |grep -o '^[a-zA-Z0-9]*'  

其中“127.0.0.1”是您要查找的地址。

-B1 设置要返回的匹配之前的行数。

-o 将第二个 grep 设置为仅返回匹配的段,而不是整行。

'^[a-zA-Z0-9]*' 匹配任何从行首开始的字母数字。

由于 ifconfig 缩进除了接口名称行之外的所有行,它只会匹配接口名称。

它又快又脏,但应该可以。

于 2011-02-13T19:50:06.257 回答
0
ifconfig | awk 'BEGIN{RS=""}/127.0.0.1/{print $1}'

ifconfig | ruby -00 -ane 'puts $F[0] if /127.0.0.1/'
于 2011-02-14T00:47:30.930 回答