2

申し訳ありませんがUNIX初心者です。NASで実行されるスクリプトがあり、IPが何であるかを確認し、VPNが変更された場合にVPNに再接続するためのスクリプトを実行します。

注:この例では、以下のIPの最初の4つの数字を「x」に変更しました。実際のIPアドレスを反映する必要があることがわかっています。

#!/bin/sh
YOUR_IP="$(w3m -dump http://checkip.dyndns.org)"

echo "Current ip:" "$YOUR_IP"
if [ "$YOUR_IP" == "Current IP Address: XX.XX.148.73" ]
then
        echo "UP VPN is active :)"
else
        echo "DOWN VPN is disconnect :("
        sh /opt/etc/init.d/S20openvpn restart
fi

echo "$(date +"%d / %m / %Y")"
echo "$(date +"%H : %M : %S")"
echo "------------------------"
exit

ifelseステートメントが実行されない理由を誰かに教えてもらえますか。私のログでは、以下を取得します。ステートメントはエラーである必要があると思います。そうでないと、何かがエコーされますが、現時点ではそうではありません。構文エラーの可能性があります。または、w3m -dumpが、elseが実行される前に結果を取得しない可能性があります。デバッグするのに十分なUNIXがわかりません。どんな助けでも素晴らしいでしょう。

Current ip: Current IP Address: XX.XX.148.73
16 / 05 / 2012
18 : 50 : 01

4

1 に答える 1

1

それを修正する2つの方法:

  1. /bin/bash を使用します (可能な場合)
  2. 比較には「==」ではなく「=」を使用します

This SO question 詳細情報/背景を提供します[ :シェルプログラミングの予期しない演算子

于 2012-05-16T18:56:22.600 に答える