[fli4l] Fritzbox als VOIP-Client hinter fli4l nach dem IP-UP rebooten
Thomas Grunenberg
tho_gru at gmx.de
So Nov 13 13:28:22 CET 2016
Moin, moin,
Da beim Rebooten der Fritz!Box jeweils das Log gelöscht wird, habe ich
ein Script geschrieben, welches die Log aus das Firtz!Box in einer Datei
speichert.
Das interessante an dem Script ist, dass sowohl TR-064 Befehle als auch
LUA-Kommandos genutzt werden. Die für das LUA-Kommando nötige SID
liefert das TR-064-Kommando GetPhonebook.
Damit das Script funktioniert muss UPnP auf der Fritz!Box aktiv sein
(siehe vorheriges Post).
In fli4l muss das Paket dyndns aktiviert (OPT_DYNDNS='yes' und
DYNDNS_N='0'), damit der crul Befehl zur Verfügung steht.
Folgende Einstellungen im Script sollten geprüft und entsprechend
angepasst werden:
1) Adresse der Fritz!Box - Variable *FBaddr*
2) Port der Fritz!Box - Variable *FBport*
3) UPnP-Account der Fritz!Box - Variable *FBuser*
4) Passwort für UPnP-Account - Variable *FBpass*
5) Verzeichnis für gespeicherte Log-Dateien - Variable *LOGdir*
6) Optional Name der Datei - Variable *LOGfile*
Gruß
Thomas
-------------- nächster Teil --------------
#!/bin/sh
set -u
FBaddr="fritz.box"
FBport="49000"
FBuser="<User>"
FBpass="<password>"
get_control_url() {
curl -s "http://${FBaddr}:${FBport}/tr64desc.xml" |
sed -e '/'"${1}"'<\/controlURL\>/!d' -e 's/^<controlURL>//' -e 's/<\/controlURL>.*$//'
}
get_urn() {
curl -s "http://${FBaddr}:${FBport}/tr64desc.xml" |
sed -e '/'"${1}"'<\/serviceType\>/!d' -e 's/^<serviceType>//' -e 's/<\/serviceType>.*$//'
}
control_url="$(get_control_url deviceinfo)"
urn="$(get_urn DeviceInfo:1)"
FBportSSL=$(curl -s -m 5 -X POST "http://${FBaddr}:${FBport}${control_url}" \
-H "Content-Type: text/xml; charset=\"utf-8\"" \
-H "SoapAction:${urn}#GetSecurityPort" \
-d "<?xml version=\"1.0\" encoding=\"utf-8\"?>
<s:Envelope xmlns:s=\"http://schemas.xmlsoap.org/soap/envelope/\"
s:encodingStyle=\"http://schemas.xmlsoap.org/soap/encoding/\">
<s:Body>
<u:GetSecurityPort xmlns:u=\"${urn}\">
</u:GetSecurityPort>
</s:Body>
</s:Envelope>" | \
grep 'NewSecurityPort' | sed 's#^.*<NewSecurityPort>\(.*\)<.*$#\1#')
#echo SSL port for TR-064 is ${FBportSSL}
control_url="$(get_control_url x_contact)"
urn="$(get_urn X_AVM-DE_OnTel:1)"
FBphoneBookURL=$(curl -s --anyauth -u "${FBuser}:${FBpass}" --insecure \
-X POST "https://${FBaddr}:${FBportSSL}${control_url}" \
-H 'Content-Type: text/xml; charset=\"utf-8\"' \
-H "SoapAction:${urn}#GetPhonebook" \
-d "<?xml version=\"1.0\" encoding=\"utf-8\"?>
<s:Envelope xmlns:s=\"http://schemas.xmlsoap.org/soap/envelope/\"
s:encodingStyle=\"http://schemas.xmlsoap.org/soap/encoding/\">
<s:Body>
<u:GetPhonebook xmlns:u=\"${urn}\">
<NewPhonebookID>0</NewPhonebookID>
</u:GetPhonebook>
</s:Body>
</s:Envelope>" |
grep "NewPhonebookURL" | sed -e 's/<NewPhonebookURL>//g' -e 's/<\/NewPhonebookURL>//g' )
SID=$(echo "${FBphoneBookURL}" | sed -n -e 's/.*\?sid=\([0-9a-f]*\)\&.*/\1/p')
filter_log() {
echo "######## $(date -u) ########"
sed -e 's/^ *"_node" *: *"//' -e 's/", *$//'
}
LOGdir=/var/lib/persistent/aaa
LOGfile=FB-log-$(date +"%Y%m%d").log
FILE="${LOGdir}/${LOGfile}"
curl -s --insecure "https://${FBaddr}/query.lua?mq_log=logger:status/log&sid=${SID}" |
grep -e '"_node" *: *' |
filter_log >> "${FILE}"
Mehr Informationen über die Mailingliste Fli4L