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

时间:2011-02-13 18:59:19

标签: bash shell ethernet ifconfig

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

感谢。

4 个答案:

答案 0 :(得分: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

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

答案 1 :(得分: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}'

答案 2 :(得分: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缩进除接口名称行之外的所有行,因此它只会匹配接口名称。

这很快,很脏,但应该有用。

答案 3 :(得分:0)

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

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