Linux:检查是否在同一网络中

托比

我想在bash脚本中测试两个IP是否在同一网络上。

我有一个IP $remoteIP,我想测试它是否与当前计算机位于同一网络(局域网)(例如$remoteIP=192.168.2.200hostname -I=,192.168.2.13且其子网掩码为例如,255.255.255.0这些主机位于同一网络上。 192.168.1.32将不在同一网络上。)

我要这样做是因为我想检查是否在本地网络或具有直接IP的某些服务器上的ssh's ssh's。基于此,我要为ps1提示着色(绿色=否ssh,黄色=本地网络,红色=在线服务器)

首先,我只需要支持大型子网掩码(255.0.0.0、255.255.0.0、255.255.255.0)。

因此,我需要执行以下步骤:

  1. 获取ssh连接进入的接口的子网掩码
  2. 测试它是什么子网掩码(如果[...],则很简单)
  3. 获取通过ssh连接进入的IP地址
  4. 获取remoteIP地址(我认为它将在某些环境变量中)
  5. 根据子网掩码对两个地址进行子字符串化
  6. 比较网络部分。

在第1、3和5点,我不知道该怎么做。

iscfrc

另一种策略是使用Linux的ip命令来确定您的默认网关,以及是否将通过所述网关路由给定的IP地址。

默认网关可以在以下输出中看到ip route

$ ip route
default via 192.168.1.1 dev eth0  metric 100
192.168.1.0/24 dev eth0  proto kernel  scope link  src 192.168.1.2

要仅获取默认网关的IP地址,请执行以下操作:

$ ip route | awk '/default/ {print $3}'
192.168.1.1

要确定如何路由给定的IP地址,请使用ip route get

$ ip route get 4.2.2.2
4.2.2.2 via 192.168.1.1 dev eth0  src 192.168.1.2

$ ip route get 192.168.1.10
192.168.1.10 dev eth0  src 192.168.1.2

(请注意,第一个命令说“ via 192.168.1.1”,表示它将通过默认网关进行路由)

将所有内容放到一个函数中:

is_remote_ip() {
   ip route get $1 | grep -q "via $(ip route | awk '/default/ {print $3}') "
}

示范:

$ is_remote_ip 4.2.2.2 && echo yes || echo no
yes

$ is_remote_ip 192.168.1.10 && echo yes || echo no
no

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

连接到同一VPN是否意味着连接到同一网络?

来自分类Dev

同一网络中多主机中的docker网络

来自分类Dev

在同一网络中无法访问 Ubuntu 中的 Http 服务器

来自分类Dev

在同一网络中的多个节点中野生许多节点

来自分类Dev

同一网络中的Docker容器无法通信

来自分类Dev

同一网络中的Docker容器无法相互通信

来自分类Dev

同一网络会话中的永久计数器

来自分类Dev

同一网络会话中的永久计数器

来自分类Dev

在同一网络中创建SQL Server 2008的客户端

来自分类Dev

不在同一网络中的两台服务器之间的scp

来自分类Dev

如何在同一网络中检测给定设备的IP

来自分类Dev

在同一网络中运行两个DHCP服务器

来自分类Dev

在Sencha Touch中同一网络上的设备之间传输消息

来自分类Dev

同一网络中的VM Azure和Web应用程序

来自分类Dev

无法访问同一网络中的计算机

来自分类Dev

同一网络中的nic之间的数据包转发(wifi / eth)

来自分类Dev

如何通过主机名访问同一网络中的主机?

来自分类Dev

SSH进入同一网络中的两台不同的计算机

来自分类Dev

在同一网络中的多个节点中野生许多节点

来自分类Dev

如何从同一网络中的android deivice访问托管在localhost上的站点?

来自分类Dev

同一网络中的数据包转发

来自分类Dev

确定同一网络中的全局IP vb.net,C#

来自分类Dev

访问由 docker-compose 在同一网络中创建的容器

来自分类Dev

是否可以在同一网络的IP级别上桥接以太网和WiFi?

来自分类Dev

如何在CAFFE的新网络中重复使用同一网络两次

来自分类Dev

在同一网络视图中的 chrome 应用程序中打开来自网络视图的链接

来自分类Dev

是否可以使用 Google Fit REST API 在同一网络应用程序中聚合来自多个用户的健身数据?

来自分类Dev

如何使两个接口在同一网络中使用同一网关?

来自分类Dev

在同一网络中部署TURN和媒体服务器是否有意义?

Related 相关文章

  1. 1

    连接到同一VPN是否意味着连接到同一网络?

  2. 2

    同一网络中多主机中的docker网络

  3. 3

    在同一网络中无法访问 Ubuntu 中的 Http 服务器

  4. 4

    在同一网络中的多个节点中野生许多节点

  5. 5

    同一网络中的Docker容器无法通信

  6. 6

    同一网络中的Docker容器无法相互通信

  7. 7

    同一网络会话中的永久计数器

  8. 8

    同一网络会话中的永久计数器

  9. 9

    在同一网络中创建SQL Server 2008的客户端

  10. 10

    不在同一网络中的两台服务器之间的scp

  11. 11

    如何在同一网络中检测给定设备的IP

  12. 12

    在同一网络中运行两个DHCP服务器

  13. 13

    在Sencha Touch中同一网络上的设备之间传输消息

  14. 14

    同一网络中的VM Azure和Web应用程序

  15. 15

    无法访问同一网络中的计算机

  16. 16

    同一网络中的nic之间的数据包转发(wifi / eth)

  17. 17

    如何通过主机名访问同一网络中的主机?

  18. 18

    SSH进入同一网络中的两台不同的计算机

  19. 19

    在同一网络中的多个节点中野生许多节点

  20. 20

    如何从同一网络中的android deivice访问托管在localhost上的站点?

  21. 21

    同一网络中的数据包转发

  22. 22

    确定同一网络中的全局IP vb.net,C#

  23. 23

    访问由 docker-compose 在同一网络中创建的容器

  24. 24

    是否可以在同一网络的IP级别上桥接以太网和WiFi?

  25. 25

    如何在CAFFE的新网络中重复使用同一网络两次

  26. 26

    在同一网络视图中的 chrome 应用程序中打开来自网络视图的链接

  27. 27

    是否可以使用 Google Fit REST API 在同一网络应用程序中聚合来自多个用户的健身数据?

  28. 28

    如何使两个接口在同一网络中使用同一网关?

  29. 29

    在同一网络中部署TURN和媒体服务器是否有意义?

热门标签

归档