Der neue LTE-Router hingegen (Huawei B390s aka Telekom LTE 1) hat ein gar schreckliches Webinterface, und ohne Authentisierung rückt er gar keine Infos heraus. Nicht mal die Statusseite bekommt man mit einem harmlosen wget-Aufruf ;(, sondern nur eine Fehlerseite mit Javascript.
Aber wget ist schlau genug; man muss zwei Aufrufe durchführen und beim Aufruf der Login-Funktion (erster Aufruf) die Logindaten als "POST data" mitschicken und beim Beenden alle Cookies inklusive Sessions-Cookies speichern. Dann klappt's auch mit dem Huawei ;)
Hier ist ein Shellscript, das das Transfervolumen (in+out) und IP-Adresse zeigen und protokollieren kann. Das Passwort steht hartkodiert im wget-Aufruf nach --post-data. Das Skript sollte also mit chmod 700 behandelt werden, damit das keiner nachgucken kann. Falls im Passwort Sonderzeichen vorkommen, müssen die in der %-Schreibweise escape'd werden (+ ist %2B, # ist %23, ? ist %3F usw.).
Ohne Parameter aufgerufen werden alle Infos auf die Konsole ausgegeben.
Mit -f dateiname landen die Infos zusätzlich in einer Statusdatei (die IP nur, wenn sie sich von der vorher gespeicherten unterscheidet).
Mit -i, -o, -I kann man einschränken, dass man nur Volumen-In, Volumen-Out, IP sehen will.
#!/bin/sh
showin=0
showout=0
showip=0
status=
while getopts "ioIf:" opt
do
case "$opt" in
i) showin=1;;
o) showout=1;;
I) showip=1;;
f) status="$OPTARG";;
esac
done
shift $(expr $OPTIND - 1)
if [ "$showin$showout$showip" = "000" ]
then
showin=1
showout=1
showip=1
fi
PATH=/opt/bin:/opt/sbin${PATH:+:$PATH}
C=/tmp/cookies.txt
U1="http://vodafonemobile.cpe/login.cgi"
U2="http://vodafonemobile.cpe/basic_status.asp"
wget --save-cookies "$C" \
--keep-session-cookies \
-q --tries=1 \
-O /dev/null \
--post-data 'Username=admin&Password=PASSWORT_ESCAPED' \
"$U1"
wget --load-cookies "$C" \
-q --tries=1 \
-O - \
"$U2" | \
awk -F, '
/total_volum_array = /{printf"%d %d ",$3,$4}
/WanIp = / {gsub(/[(")]/,"",$2);printf"%s\n",$2}
' > /var/log/status-lte.txt
read in out ip < /var/log/status-lte.txt
if [ "$showin$showout" != "00" ]
then
test $showin -eq 1 && echo $in
test $showout -eq 1 && echo $out
if [ -n "$status" ]
then
date +"%Y%m%d-%T $in $out" >> "$status"
fi
fi
if [ $showip -eq 1 ]
then
echo $ip
# want echo to file?
if [ -n "$status" ]
then
# file exists?
if [ -f "$status" ]
then
lastip=$(tail -1 "$status" | awk '{print$NF}')
test "$lastip" != "$ip" && date +"%Y%m%d-%T $ip" >> "$status"
else
# create new
date +"%Y%m%d-%T $ip" >> "$status"
fi
fi
fi
rm -f "$C"
Keine Kommentare:
Kommentar veröffentlichen