通过IP地址查找网络接口 - Linux/Bash

5
我想知道如何使用sed按IP地址查询,并显示正在使用它的接口名称。
例如...
ipconfig -a | grep 10.0.0.10

我预计它会返回ETH0


首先,正确的命令是 ifconfigipconfig 是 DOS 命令(我猜这只是一个打字错误)。那么单独运行 ifconfig -a 的输出是什么?你的系统上是否列出了 IP 为 10.0.0.10 的 NIC? - theruss
您IP地址为143.198.54.68,由于运营成本限制,当前对于免费用户的使用频率限制为每个IP每72小时10次对话,如需解除限制,请点击左下角设置图标按钮(手机用户先点击左上角菜单按钮)。 - David C. Rankin
4个回答

6
ifconfig | grep -B1 10.0.0.10 | grep -o "^\w*"

没有awk的好解决方案 - Seven
无法在单个网络卡中使用多个IP。 - Ammar Faizi

3
您应该使用这个命令:
ifconfig | grep -B1 "inet addr:10.0.0.10" | awk '$1!="inet" && $1!="--" {print $1}'

希望这可以帮到您!

如果使用普通的 grep 10.0.0.10 仍然找不到想要的内容,那么添加字符串也无法帮助OP。 - theruss
你能解释得更清楚一些吗?什么是“OP”,如果以太网名称与给定的IP地址匹配,你需要打印出它吗? - Thanh Nguyen Van
OP = 原帖发布者,顺便说一句,Thanh,这正是我在寻找的,谢谢 :) - TonyW
不,任何带有 grep x | awk '{ y }' 的东西通常最好写成 awk '/x/ { y }' - 这是 无用的 grep - tripleee
虽然它在末尾添加了一个换行符,但为什么会这样呢? - JoshuaTree

2
ip -br -4 a sh | grep 10.0.0.10 | awk '{print $1}'

现在应该接受这个答案。 - Syranolic

0
如果您想要一个与 sed 相关的解决方案,您可以尝试这个。它有点难以理解它的工作原理,但最终这个结合起来是有效的。
 ifconfig | sed -n '/addr:10.0.0.10/{g;H;p};H;x' | awk '{print $1}'

如果您想通过脚本将其作为参数使用,请使用"$1"之类的方式,而不是10.0.0.10。

Sed手册参考:http://www.gnu.org/software/sed/manual/sed.html#tail


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接