【问题标题】:How can I fetch the ethernet port given the ip address?如何获取给定 IP 地址的以太网端口?
【发布时间】:2011-06-26 13:11:10
【问题描述】:

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

谢谢。

【问题讨论】:

    标签: bash shell ethernet ifconfig


    【解决方案1】:

    将 127.0.0.1 替换为你想要获取接口信息的 ip 地址

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

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

    ethtool -p $OUTPUT_OF_FIRST_COMMAND
    

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

    【讨论】:

      【解决方案2】:

      有点乱,但应该可以:

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

      【讨论】:

        【解决方案3】:

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

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

        【讨论】:

          【解决方案4】:
          ifconfig | awk 'BEGIN{RS=""}/127.0.0.1/{print $1}'
          
          ifconfig | ruby -00 -ane 'puts $F[0] if /127.0.0.1/'
          

          【讨论】:

            猜你喜欢
            • 2016-06-20
            • 2011-11-09
            • 2016-10-24
            • 2014-12-01
            • 2022-10-12
            • 1970-01-01
            • 2016-07-12
            • 1970-01-01
            • 2010-12-07
            相关资源
            最近更新 更多