Script Bash criando arquivos indesejados

1

Acabei fazendo este script em um roteador DD-WRT que está criando dois arquivos indesejados e não consigo entender o porquê. Eu não sou um gênio de script, especialmente com bash, então qualquer ajuda seria apreciada.

#!/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

Este script cria dois arquivos indesejados em / tmp / myvpn chamados "country" e "ip". Eu devo estar fazendo algo errado. Basicamente, o script tenta verificar se a VPN está estabelecida certificando-se se eu efetivamente mudei de país (é necessário que eu faça essa verificação).

    
por Yass T 28.04.2017 / 19:55

1 resposta

6

Os arquivos estão sendo criados por esses dois comandos:

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

OK, o segundo é um erro de sintaxe, mas acho que é um erro de digitação. O formato do comando wget é:

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

Ele baixará file e o salvará no diretório atual. Já que você não nos contou o que você esperava que acontecesse, eu acho que você queria salvar o conteúdo do arquivo nas variáveis. Em caso afirmativo, você precisa informar wget para imprimir na saída padrão usando -O - :

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

Você não pode redirecionar a saída ( > /dev/null ), pois isso significa que nada é impresso.

    
por 28.04.2017 / 20:13