Bash 脚本:定期检查 wan ip 并在 IP 更改时采取行动

Bash 脚本:定期检查 wan ip 并在 IP 更改时采取行动

我是 Bash 新手,我只是不明白如何编写一个简单的脚本来执行以下操作。

该脚本应检查我拥有的公共 IP,如果 IP 发生更改(如果 ISP1 发生故障或 ISP1 会给我另一个静态 IP,以前发生过这种情况),则脚本应停止 OpenVPN 服务器并启动 OpenVPN 客户端到远程服务器。

现在我能理解和写下的就是:

#!/bin/bash

myip="XXX.XXX.XXX.XXX"
checkip="$(dig +short myip.opendns.com @resolver1.opendns.com)"

if [ "$checkip" = "$myip" ]; then
    /etc/init.d/openvpn.server start
    /etc/init.d/openvpn.client stop
else
    /etc/init.d/openvpn server stop
    /etc/init.d/openvpn.client start
fi

我不明白如何循环这个脚本来每 10 秒检查一次 IP 并将其添加到 Gentoo 以作为服务运行。

答案1

以下是如何使用无限 while 循环来不断检查。

#!/bin/bash
myip="XXX.XXX.XXX.XXX"
while; do
    checkip="$(dig +short myip.opendns.com @resolver1.opendns.com)"

    if [ "$checkip" = "$myip" ]; then
        /etc/init.d/openvpn.server start
        /etc/init.d/openvpn.client stop
    else
        /etc/init.d/openvpn server stop
        /etc/init.d/openvpn.client start
    fi

    sleep 10
done

sleep 10循环结束时将导致 10 秒暂停,然后再次开始循环。

我不知道这是处理您想要完成的任务的最佳方法,因此您可能需要考虑其他途径。

相关内容