基本上我想创建一个 sh 脚本,只有当正在执行脚本的服务器 IP 存在于位于不同服务器中的私有 Whitelist.txt 文件中时,该脚本才能执行。
任何人都可以帮我提供代码示例吗?
谢谢你的时间 ;)
我不知道如何在执行脚本的 ip 和白名单允许的 ip 之间进行 grep 比较/检查。这就是让我感到困惑的部分。
答案1
该网站不是脚本编写服务,但这里有一些想法。实际编写脚本取决于您。
- 获取当前IP地址:
ip addr | grep inet
.
这通常会给您几个地址,包括 IPv4 和 IPv6 地址,因此您需要更具体,并根据您的需要进行修改。
从其他服务器获取白名单:例如运行一个 HTTP 服务器并通过
curl
或获取它wget
。或者将其放在共享网络驱动器上。或者通过 复制它scp
,假设凭据设置正确,这样就没有人可以用这些凭据造成伤害。在白名单中查找 IP:再次使用
grep
.编辑: 您可以使用grep 的退出代码确定是否发生匹配。详情请参阅man grep
以及man bash
如何使用它。例子:$ echo 'example' > whitelist.txt $ grep example whitelist.txt ; echo $? example 0 $ grep wrong whitelist.txt ; echo $? 1
请注意,这种方法完全不安全:白名单将公开可见,任何人都可以轻松修改脚本。
仅当此脚本仅由受信任的人员执行时,此方法才可用,并且您所需要做的就是防止它意外运行到不应运行的地方。
与 IP 地址相比,还有更先进的方法来识别当前主机,例如主机名(如果您管理应运行脚本的主机,则应该能够设置主机名)。在任何其他情况下,您确实不应该使用上述方法)。