仅当服务器 IP 位于白名单中时才有效的脚本

仅当服务器 IP 位于白名单中时才有效的脚本

基本上我想创建一个 sh 脚本,只有当正在执行脚本的服务器 IP 存在于位于不同服务器中的私有 Whitelist.txt 文件中时,该脚本才能执行。

任何人都可以帮我提供代码示例吗?

谢谢你的时间 ;)


我不知道如何在执行脚本的 ip 和白名单允许的 ip 之间进行 grep 比较/检查。这就是让我感到困惑的部分。

答案1

该网站不是脚本编写服务,但这里有一些想法。实际编写脚本取决于您。

  1. 获取当前IP地址:ip addr | grep inet.

这通常会给您几个地址,包括 IPv4 和 IPv6 地址,因此您需要更具体,并根据您的需要进行修改。

  1. 从其他服务器获取白名单:例如运行一个 HTTP 服务器并通过curl或获取它wget。或者将其放在共享网络驱动器上。或者通过 复制它scp,假设凭据设置正确,这样就没有人可以用这些凭据造成伤害。

  2. 在白名单中查找 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 地址相比,还有更先进的方法来识别当前主机,例如主机名(如果您管理应运行脚本的主机,则应该能够设置主机名)。在任何其他情况下,您确实不应该使用上述方法)。

相关内容