
Acabei fazendo esse script em um roteador DD-WRT que está criando dois arquivos indesejados e não consigo entender o porquê. Não sou um gênio em scripts, 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 corretamente verificando se efetivamente mudei de país (é necessário que eu realize esta verificação).
Responder1
Os arquivos estão sendo criados por estes 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 presumo que seja um erro de digitação. O wget
formato do comando é:
wget http://www.example.com/file
Em seguida, ele fará o download file
e salvará no diretório atual. Como você não nos contou o que esperava que acontecesse, imagino que você queria salvar o conteúdo do arquivo nas variáveis. Nesse caso, 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
), é claro, pois isso significa que nada será impresso.