我是 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 秒暂停,然后再次开始循环。
我不知道这是处理您想要完成的任务的最佳方法,因此您可能需要考虑其他途径。