Ein kleines Bash script um das Telefonbuch zu ersetzen hab ich (leicht abgekupfert beim Datensicherungsscript hier im Forum) gebaut bekommen. Ich hab nur ein Problem das vernünftig unter Windows nachzubauen... Vielleicht ist das ja schonmal etwas Ideenanreicherung.
USERPASSLOGIN auf 0 -> Login nur mit Passwort an der Fritzbox
USERPASSLOGIN auf 1 -> Login mit Benutzer und Passwort
USERE und PASSE sind Benutzer/Passwort für Anmeldung mit Benutzer und Passwort
PASS für die Anmeldung nur mit Passwort
TELEFONBUCH ist die ID des Telefonbuchs. Achtung: Nummerierung beginnt bei 0 - 2 ist in dem Fall also das 3. Telefonbuch
FILE ist entsprechend der Pfad zur Datei und muss ein @ vorne haben.
USERPASSLOGIN auf 0 -> Login nur mit Passwort an der Fritzbox
USERPASSLOGIN auf 1 -> Login mit Benutzer und Passwort
USERE und PASSE sind Benutzer/Passwort für Anmeldung mit Benutzer und Passwort
PASS für die Anmeldung nur mit Passwort
TELEFONBUCH ist die ID des Telefonbuchs. Achtung: Nummerierung beginnt bei 0 - 2 ist in dem Fall also das 3. Telefonbuch
FILE ist entsprechend der Pfad zur Datei und muss ein @ vorne haben.
Code:
#!/bin/bash
URL=http://192.168.3.90
USERPASSLOGIN=0
USERE=testuser
PASSE=testpass1
PASS=testpass2
TELEFONBUCH=2
FILE="@/home/test/FritzExport.xml"
if [ $USERPASSLOGIN == 1 ] ; then
echo 1
CURLUSERPASSSTRING="--user ${USER}:${PASSE}"
else
echo 0
CURLUSERPASSSTRING=""
PASSE=$PASS
fi
_CHALLENGE=`curl -s -k \
${CURLUSERPASSSTRING} \
"${URL}/login.lua" | \
grep 'challenge' | egrep '[0-9a-f]{8}' | \
awk -F= '{print $2}' | tail -n1 | egrep -o '[0-9a-f]{8}'`
if [ -z "${_CHALLENGE}" ] ; then
echo "Error getting challenge using ${URL}" >&2
else
# echo "Received Challenge \"${_CHALLENGE}\"" >&2
# build md5 from challenge key and password
_MD5=`echo -n ${_CHALLENGE}"-"${PASSE} | \
iconv -f ISO8859-1 -t UTF-16LE | \
md5sum -b | awk '{print substr($0,1,32)}'`
# assemble challenge key and md5
_RESPONSE=${_CHALLENGE}"-"${_MD5}
# get sid for later use
_SID=`curl -i -s -k \
${CURLUSERPASSSTRING} \
-d 'response='${_RESPONSE} \
-d 'page=' \
${URL}/login.lua | \
grep "Location:" | awk -F'=' {' print $NF '}`
if ! curl -s -k \
${CURLUSERPASSSTRING} \
--form 'sid='${_SID} \
--form 'PhonebookId='${TELEFONBUCH} \
--form 'PhonebookImportFile=${FILE}' \
${URL}/cgi-bin/firmwarecfg >TMP1 ; then
echo "Error" >&2
fi
fi