
Ich habe dieses Skript schließlich auf einem DD-WRT-Router erstellt, der zwei unerwünschte Dateien erstellt, und ich verstehe nicht, warum. Ich bin kein Skriptgenie, insbesondere nicht mit Bash, daher wäre ich für jede Hilfe dankbar.
#!/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
Dieses Skript erstellt zwei unerwünschte Dateien in /tmp/myvpn mit den Namen „country“ und „ip“. Ich muss etwas falsch machen. Im Grunde versucht das Skript zu überprüfen, ob das VPN richtig eingerichtet ist, indem es prüft, ob ich das Land tatsächlich geändert habe (diese Prüfung muss ich durchführen).
Antwort1
Die Dateien werden mit diesen beiden Befehlen erstellt:
r1=`wget -q http://ipinfo.io/ip` > /dev/null
r2=`$(wget -q "http://ipinfo.io/$r1/country")` > /dev/null
OK, der zweite ist ein Syntaxfehler, aber ich gehe davon aus, dass es sich um einen Tippfehler handelt. Das wget
Format des Befehls ist:
wget http://www.example.com/file
Anschließend wird es heruntergeladen file
und im aktuellen Verzeichnis gespeichert. Da Sie uns nicht gesagt haben, was Sie erwartet haben, gehe ich davon aus, dass Sie den Dateiinhalt in den Variablen speichern wollten. Wenn ja, müssen Sie angeben, wget
dass in der Standardausgabe gedruckt werden soll, und zwar mit -O -
:
r1="$(wget -qO - http://ipinfo.io/ip)"
r2="$(wget -qO - http://ipinfo.io/$r1/country)"
> /dev/null
Eine Umleitung der Ausgabe ( ) ist natürlich nicht möglich , da sonst nichts ausgedruckt wird.