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

发布于 2024-10-17 05:40:55 字数 98 浏览 2 评论 0原文

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

谢谢。

I am trying to write a bash script to fetch the ethernet port of an interface whose IP address I know. I need to grab this from ifconfig but can't seem to be able to figure out how to go about it. Any ideas?

Thanks.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

夜司空 2024-10-24 05:40:55

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

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

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

ethtool -p $OUTPUT_OF_FIRST_COMMAND

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

Replace 127.0.0.1 with the ip address you want to get the interface info for

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

If you also want to identify the physical port on the machine, run

ethtool -p $OUTPUT_OF_FIRST_COMMAND

It will blink the light on the ethernet card associated with that interface

倾城°AllureLove 2024-10-24 05:40:55

有点乱,但应该可以:

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

A little messy but should work:

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

Optionally, you could use the ip command which, when used with the -o|-oneline option, is a lot easier to parse. For example

ip -o addr | awk '/1.2.3.4/{print $2}'
锦欢 2024-10-24 05:40:55

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

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

Off the top of my head I might use grep:

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

Where '127.0.0.1' is the address you're looking for.

-B1 sets the number of lines preceding the match to return.

-o sets the second grep to only return the matching segment, instead of the whole line.

'^[a-zA-Z0-9]*' matches any alphanumerics that start at the beginning of the line.

Since ifconfig indents all lines except the interface name line, it will only match the interface name.

It's quick and dirty, but should work.

夕色琉璃 2024-10-24 05:40:55
ifconfig | awk 'BEGIN{RS=""}/127.0.0.1/{print $1}'

ifconfig | ruby -00 -ane 'puts $F[0] if /127.0.0.1/'
ifconfig | awk 'BEGIN{RS=""}/127.0.0.1/{print $1}'

ifconfig | ruby -00 -ane 'puts $F[0] if /127.0.0.1/'
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文