如何获取给定IP地址的以太网端口?

如何获取给定IP地址的以太网端口?

问题描述:

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

谢谢。

有点凌乱但应该工作:

/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}' 

与IP地址替换127.0.0.1你想获得

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

接口的信息,如果你也想找出机器上的物理端口,运行

ethtool -p $OUTPUT_OF_FIRST_COMMAND 

它将闪烁与该接口相关的以太网卡上的光

+0

打我吧:) +1 – 2011-02-13 19:15:26

关闭我的头顶,我可能会使用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缩进除接口名称行之外的所有行,它只会匹配接口名称。

这是快速和肮脏的,但应该工作。

+0

+1对于说明(s) – 2011-02-13 20:20:50

ifconfig | awk 'BEGIN{RS=""}/127.0.0.1/{print $1}' 

ifconfig | ruby -00 -ane 'puts $F[0] if /127.0.0.1/'