Linux 给定IP地址,在同一子网上查找接口

Linux 给定IP地址,在同一子网上查找接口,linux,bash,ethernet,Linux,Bash,Ethernet,我正在尝试创建一个bash脚本,其中一小部分需要弄清楚,给定另一台计算机的IP地址,同一个网络上有什么接口 因此,如果我的计算机具有以下接口(不包括lo): 我知道在以下地址有一台电脑: 192.168.0.101 有没有一种简单的方法来提取答案eth0 另外,这个问题不是问我如何根据我自己计算机的地址获取接口。不,名称eth0没有以任何方式广播,因此无法远程获取。它只是一个仅在内部使用的名称。 您必须登录到远程计算机(ssh)并使用例如ifconfig获取信息 如果您需要远程计算机(网络上)

我正在尝试创建一个bash脚本,其中一小部分需要弄清楚,给定另一台计算机的IP地址,同一个网络上有什么接口

因此,如果我的计算机具有以下接口(不包括lo):

我知道在以下地址有一台电脑:

192.168.0.101
有没有一种简单的方法来提取答案
eth0


另外,这个问题不是问我如何根据我自己计算机的地址获取接口。

不,名称
eth0
没有以任何方式广播,因此无法远程获取。它只是一个仅在内部使用的名称。 您必须登录到远程计算机(ssh)并使用例如
ifconfig
获取信息

如果您需要远程计算机(网络上)的MAC地址,请使用arp:


循环通过接口,并使用接口的子网掩码屏蔽接口IP和给定IP。如果结果相等,则它们位于同一子网上。请展示您所做的尝试,我们不是来为您做工作的,只是帮助您修复您编写的内容。路由表对于您的情况是否更可靠?您可以使用以下简单命令检查信息:
iproute get DESTADDR
,这本身就提出了一个很好的观点。如果您正在解析
ifconfig
,您可能希望转到解析
ip
的输出,因为
ifconfig
将在转换到
systemd
完成后消失<代码>ifconfig仅在每个发行版的基础上可用。它不再存在于
Arch
。嗯,不幸的是我意识到我对你撒谎了。我要找的电脑还不存在。实际上,我正在使用一个需要分配IP地址的嵌入式系统
ip-route-get-DESTADDR
不幸地给了我错误的答案(我认为是因为它使用了wirelesses默认网关)。我本来希望避免使用混乱的子网解析代码,但也许我不能。如果
ip-route-get
给了您错误的信息,那么您希望该路由以后如何工作?您是否要在网络上(可能是新的)设备上添加一个ip,以便稍后在该ip的路由决策中使用?确定有一种方法,您可以为每个接口计算
ip地址和网络掩码
,并检查它是否等于
192.168.0.101和网络掩码
@nos否,这无助于确定它是否为eth0、eth1,wlan0,。。。正如在原始问题中所述。实际上,没有办法发现主机如何调用配置了特定IP的接口,另一个类似的选项是使用一些清单服务,其中所有主机注册其接口和IP,您可以查询此服务以获取此信息。但是如果你不能访问远程主机,那就没有办法了。我相信你误解了我的问题。我试图问“给定一个随机IP地址,我的计算机是否有一个IP地址分配给同一子网的NIC?”@lxer如果在同一子网中有多个NIC,请务必注意。但是比较网络地址是检查一个IP地址是否属于特定子网的标准方法,并且是(不包括您添加的任何奇数iptable或路由规则)IP堆栈在确定发送到目标IP时要使用哪个接口时所做的。E在这种情况下,
eth0:192.168.0.100&255.255.0==192.168.0.0
wlan0:192.168.5.100&255.255.0==192.168.5.0
。根据每个网络掩码计算192.168.0.101的子网,您会发现网络地址与eth0匹配
192.168.0.101
arp 192.168.0.101