不要なファイルを作成する Bash スクリプト

不要なファイルを作成する Bash スクリプト

結局、DD-WRT ルーターでこのスクリプトを作成しましたが、2 つの不要なファイルが作成され、その理由がわかりません。私はスクリプト作成の達人ではなく、特に bash に関しては素人なので、どなたか助けていただければ幸いです。

#!/bin/sh

sleep 30
mkdir /tmp/myvpn; cd /tmp/myvpn

# ... doing stuff...

while [ 1 ]
do
  r1=`wget -q http://ipinfo.io/ip` > /dev/null
  r2=`$(wget -q "http://ipinfo.io/$r1/country")` > /dev/null
  if [ $r2 -eq "XX" ] 
    then echo "XX OK" > /tmp/myvpn/result_check_vpn.txt
    else
        echo "XX NOK" > /tmp/myvpn/result_check_vpn.txt
        killall -q openvpn
        sleep 5
        openvpn --config /tmp/openvpncl/openvpn.conf --route-up /tmp/myvpn/route-up.sh --down-pre /tmp/myvpn/route-down.sh --daemon
        sleep 25
        sh /proc/net/ip_conntrack_flush
  fi
sleep 180
done

このスクリプトは、/tmp/myvpn に「country」と「ip」という 2 つの不要なファイルを作成します。何か間違っているに違いありません。基本的に、スクリプトは、国が実際に変更されたかどうかをチェックすることによって、VPN が正しく確立されているかどうかをチェックしようとします (このチェックを実行する必要があります)。

答え1

ファイルは次の 2 つのコマンドによって作成されます。

r1=`wget -q http://ipinfo.io/ip` > /dev/null
r2=`$(wget -q "http://ipinfo.io/$r1/country")` > /dev/null

2 番目は構文エラーですが、これはタイプミスだと思います。wgetコマンドの形式は次のとおりです。

wget http://www.example.com/file

その後、ダウンロードしfileて現在のディレクトリに保存します。何を期待していたのかを教えていただけないので、ファイルの内容を変数に保存したいのだと思います。そうであれば、次のようにしてwget標準出力に印刷するように指示する必要があります-O -

r1="$(wget -qO - http://ipinfo.io/ip)"
r2="$(wget -qO - http://ipinfo.io/$r1/country)" 

> /dev/nullもちろん、出力 ( ) をリダイレクトすることはできません。リダイレクトすると何も印刷されないことになります。

関連情報