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秒間一時停止します。

これが達成したいタスクを処理するための最良の方法であるかどうかわからないので、他の方法を検討することをお勧めします。

おすすめ記事