Bash-скрипт, создающий нежелательные файлы

Bash-скрипт, создающий нежелательные файлы

Я закончил тем, что сделал этот скрипт на маршрутизаторе DD-WRT, который создает два нежелательных файла, и я не могу понять, почему. Я не гений скриптинга, особенно с 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". Должно быть, я делаю что-то неправильно. По сути, скрипт пытается проверить, правильно ли установлен VPN, проверяя, действительно ли я сменил страну (мне необходимо выполнить эту проверку).

решение1

Файлы создаются этими двумя командами:

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

Хорошо, второе — это синтаксическая ошибка, но я предполагаю, что это опечатка. 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Конечно, вы не можете перенаправить вывод ( ), так как это означает, что ничего не будет выведено.

Связанный контент