
Terminé haciendo este script en un enrutador DD-WRT que está creando dos archivos no deseados y parece que no puedo entender por qué. No soy un genio de las secuencias de comandos, especialmente con bash, por lo que agradecería cualquier ayuda.
#!/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 crea dos archivos no deseados en /tmp/myvpn llamados "país" e "ip". Debo estar haciendo algo mal. Básicamente, el script intenta verificar si la VPN está establecida correctamente verificando si efectivamente cambié de país (es necesario que realice esta verificación).
Respuesta1
Los archivos se crean mediante estos dos comandos:
r1=`wget -q http://ipinfo.io/ip` > /dev/null
r2=`$(wget -q "http://ipinfo.io/$r1/country")` > /dev/null
Bien, el segundo es un error de sintaxis, pero supongo que es un error tipográfico. El wget
formato del comando es:
wget http://www.example.com/file
Luego lo descargará file
y lo guardará en el directorio actual. Como no nos ha dicho qué esperaba que sucediera, supongo que quería guardar el contenido del archivo en las variables. Si es así, debe indicarle wget
que imprima en la salida estándar usando -O -
:
r1="$(wget -qO - http://ipinfo.io/ip)"
r2="$(wget -qO - http://ipinfo.io/$r1/country)"
Por supuesto, no puede redirigir la salida ( > /dev/null
), ya que eso significa que no se imprime nada.