【发布时间】:2014-03-07 22:37:42
【问题描述】:
如果两个 IP 在同一个网络上,我想在 bash 脚本中进行测试。
我有一个 IP $remoteIP,我想测试它是否与我当前的机器在同一个网络(局域网)上(例如 $remoteIP = 192.168.2.200 和 hostname -I = 192.168.2.13子网掩码为 255.255.255.0 的这些主机位于同一网络上。具有 192.168.1.32 的主机将不在同一网络上。)
我想这样做是因为我想检查我是在本地网络上的计算机上还是在具有直接 IP 的某些服务器上 ssh'ed。基于此,我想为 ps1-prompt 着色(绿色 = 无 ssh,黄色 = 本地网络,红色 = 在线服务器)
一开始我只需要支持大子网掩码(255.0.0.0、255.255.0.0、255.255.255.0)。
所以我需要以下步骤:
- 获取 ssh 连接进入的接口的子网掩码
- 测试它是什么子网掩码(简单 if [ ... ] )
- 获取 ssh 连接进入的 IP 地址
- 获取远程IP地址(我认为它会在某个环境变量中)
- 根据子网掩码对两个地址进行子串化
- 比较网络部分。
在第 1、3 和 5 点,我不知道该怎么做。
【问题讨论】:
-
我知道这不是你的答案,错误
ping -t 1 $remoteIP不在同一个网络中时应该会失败 -
但是如果它没有失败,那么如果它在同一个网络中就不是舒尔 ;-) 我只是舒尔我可以通过其他一些网络到达服务器。