
私は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秒間一時停止します。
これが達成したいタスクを処理するための最良の方法であるかどうかわからないので、他の方法を検討することをお勧めします。