FritzBox 5.5 per cuxd steuern
Moderator: Co-Administratoren
Re: FritzBox 5.5 per cuxd steuern
Ich vermute mal das es sich hier um den Linux exit code 127 handelt: 'command not found error'
Liegt die FritzBox.sh Datei wirklich dort und hast du die Rechte korrekt gesetzt?
Was erhälst du wenn du den gleichen Befehl per Putty absetzt?
Liegt die FritzBox.sh Datei wirklich dort und hast du die Rechte korrekt gesetzt?
Was erhälst du wenn du den gleichen Befehl per Putty absetzt?
Re: FritzBox 5.5 per cuxd steuern
Hallo und danke für deine Hilfe!
Rechte sind gesetzt. User Root Putty antwortet mit:
~ # clear
~ # sh /usr/local/addons/cuxd/extra/FritzBox.sh DECT200 16 0
/usr/local/addons/cuxd/extra/FritzBox.sh EndFritzBoxSkript()
EXITCODE: 0
MESSAGE : Erfolgreich
LOGGING : Messages so far captured:
FritzBox.sh 0.4
Parameter CPWMD5 = ./cpwmd5
Parameter HOMEMATIC = localhost
Parameter ADDONDIR = /usr/local/addons/cuxd
Parameter CONFIGFILE = /usr/local/addons/cuxd/extra/FritzBox.conf
Parameter FRITZLOGIN = /login_sid.lua
Parameter FRITZWEBCM = /cgi-bin/webcm
Parameter FRITZHOME = /home/home.lua
Parameter TEMPFile = /var/tmp/FritzBox_tempfile.txt=
Parameter CURLFile = /var/tmp/FritzBox_curlfile.html=
Parameter ANRUFLIST = /var/tmp/FritzBox_anruferliste.csv
Parameter Debug = /var/tmp/FritzBox.log
Parameter FritzBoxURL = http://192.168.xxx.xx
Parameter Username = BoxAdmin
Parameter Passwd = xxxxxxxx
INFO: Befehl DECT200 16 0
LOGIN: Challenge 1f12dd08
LOGIN: SID 0000000000000000
LOGIN: Keine gueltige SID - login aufbauen
LOGIN: login senden und SID herausfischen
LOGIN: ?username=BoxAdmin&response=1f12dd08-3e6109e2b4912ad581c5fbe3f3825302
LOGIN: Gueltige SID: 7047ec93146af002
GET/POST wind protokolliert in /var/tmp/FritzBox_curlfile.html=
POST : sid=7047ec93146af002&command=SwitchOnOff&id=16&value_to_set=0&xhr=1
POST : http://192.168.167.1/net/home_auto_query.lua
POST : Abgesendet
0 Erfolgreich
~ #
mfg
Arminhh
Rechte sind gesetzt. User Root Putty antwortet mit:
~ # clear
~ # sh /usr/local/addons/cuxd/extra/FritzBox.sh DECT200 16 0
/usr/local/addons/cuxd/extra/FritzBox.sh EndFritzBoxSkript()
EXITCODE: 0
MESSAGE : Erfolgreich
LOGGING : Messages so far captured:
FritzBox.sh 0.4
Parameter CPWMD5 = ./cpwmd5
Parameter HOMEMATIC = localhost
Parameter ADDONDIR = /usr/local/addons/cuxd
Parameter CONFIGFILE = /usr/local/addons/cuxd/extra/FritzBox.conf
Parameter FRITZLOGIN = /login_sid.lua
Parameter FRITZWEBCM = /cgi-bin/webcm
Parameter FRITZHOME = /home/home.lua
Parameter TEMPFile = /var/tmp/FritzBox_tempfile.txt=
Parameter CURLFile = /var/tmp/FritzBox_curlfile.html=
Parameter ANRUFLIST = /var/tmp/FritzBox_anruferliste.csv
Parameter Debug = /var/tmp/FritzBox.log
Parameter FritzBoxURL = http://192.168.xxx.xx
Parameter Username = BoxAdmin
Parameter Passwd = xxxxxxxx
INFO: Befehl DECT200 16 0
LOGIN: Challenge 1f12dd08
LOGIN: SID 0000000000000000
LOGIN: Keine gueltige SID - login aufbauen
LOGIN: login senden und SID herausfischen
LOGIN: ?username=BoxAdmin&response=1f12dd08-3e6109e2b4912ad581c5fbe3f3825302
LOGIN: Gueltige SID: 7047ec93146af002
GET/POST wind protokolliert in /var/tmp/FritzBox_curlfile.html=
POST : sid=7047ec93146af002&command=SwitchOnOff&id=16&value_to_set=0&xhr=1
POST : http://192.168.167.1/net/home_auto_query.lua
POST : Abgesendet
0 Erfolgreich
~ #
mfg
Arminhh
Re: FritzBox 5.5 per cuxd steuern
danke für die Hilfe! Fehler gefunden! Hatte im Cux Gerät vor dem Aufruf der FritzBox.sh sh vergessen einzugeben!! Also der Aufruf muss sh /usr/local/addons/cuxd/extra/FritzBox.sh WLANGast 0 heissen!!
mfg Armin
mfg Armin
Re: FritzBox 5.5 per cuxd steuern
Guten Abend,
ich hoffe es ist nicht schlimm, habe das Script um die Funktion erweitert den Status von Netzwerk-Geräten aus der Fritzbox auszulesen und in die CCU als SysVar einzutragen.
Wenn ich einen eigenen Thread dafür eröffnen soll dann einfach melden und ich mache das. Wollte aber zumindest der Übersicht halber mich hier zu Wort melden.
Eingesetzt wird dabei Curl um die Webseite von der Fritzbox herunterzuladen.
Dies wird dann über div. Funktionen auf der wichtigste reduziert und letztlich werden die aktiven Geräte mit bis zu 5 übergebenen Paramtern verarbeitet/überprüft (5 Geräte können auf Aktivität geprüft werden).
Eingabe:
Die Ausgabe sie letztlich so aus:
Nachdem wurden in der CCU die bis zu 5 Systemvariablen angepasst.
ToDo:
In der Config-Datei die 5 Systemvariablen anlegen die später mit den Anwesenheiten gefüllt werden. (Aktuell noch statisch im Code)
Code optimieren und aufräumen
Mit den Quelltext möchte ich nicht geizen, ist aber noch Beta und funktioniert im Grunde nur nach Anpassung
ich hoffe es ist nicht schlimm, habe das Script um die Funktion erweitert den Status von Netzwerk-Geräten aus der Fritzbox auszulesen und in die CCU als SysVar einzutragen.
Wenn ich einen eigenen Thread dafür eröffnen soll dann einfach melden und ich mache das. Wollte aber zumindest der Übersicht halber mich hier zu Wort melden.
Eingesetzt wird dabei Curl um die Webseite von der Fritzbox herunterzuladen.
Dies wird dann über div. Funktionen auf der wichtigste reduziert und letztlich werden die aktiven Geräte mit bis zu 5 übergebenen Paramtern verarbeitet/überprüft (5 Geräte können auf Aktivität geprüft werden).
Eingabe:
Code: Alles auswählen
sh /usr/local/addons/cuxd/extra/FritzBox.sh WLANliste Skyborgs-iPhone HTCOneChris
tiane geraet3 geraet4 geraet5
Code: Alles auswählen
Step1 : WLANListe wird runterladen ...
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 43833 0 43833 0 0 30272 0 --:--:-- 0:00:01 --:--:-- 31264
Step2 : WLANListe wird angepasst ...
Step3 : WLANListe wird auslesen ...
http://localhost:8181/loksoft.exe?ret=dom.GetObject("ANW-Christiane").State(1)
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 128 100 128 0 0 820 0 --:--:-- --:--:-- --:--:-- 2612
http://localhost:8181/loksoft.exe?ret=dom.GetObject("ANW-Ralf").State(1)
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 128 100 128 0 0 1151 0 --:--:-- --:--:-- --:--:-- 2723
Step3 : Fertig
/usr/local/addons/cuxd/extra/FritzBox402.sh EndFritzBoxSkript()
EXITCODE: 0
MESSAGE : Erfolgreich
LOGGING : Messages so far captured:
FritzBox.sh 0.4.1
Parameter CPWMD5 = ./cpwmd5
Parameter HOMEMATIC = localhost
Parameter ADDONDIR = /usr/local/addons/cuxd
Parameter CONFIGFILE = /usr/local/addons/cuxd/extra/FritzBox.conf
Parameter FRITZLOGIN = /login_sid.lua
Parameter FRITZWEBCM = /cgi-bin/webcm
Parameter FRITZHOME = /home/home.lua
Parameter TEMPFile = /var/tmp/FritzBox_tempfile.txt=
Parameter CURLFile = /var/tmp/FritzBox_curlfile.html=
Parameter ANRUFLIST = /var/tmp/FritzBox_anruferliste.csv
Parameter Debug = /var/tmp/FritzBox.log
Parameter FritzBoxURL = http://fritz.box
Parameter Username = BoxAdmin
Parameter Passwd = rb2871d!
INFO: Befehl WLANliste Skyborgs-iPhone HTCOneChristiane
LOGIN: Challenge 657f84a2
LOGIN: SID 0000000000000000
LOGIN: Keine gueltige SID - login aufbauen
LOGIN: login senden und SID herausfischen
LOGIN: ?username=BoxAdmin&response=657f84a2-ea89ebdd0ad8a73258e52579288c360d
LOGIN: Gueltige SID: 93e4492af814baa9
NWDEV: ohne Uebereinstimmung: Christiane 192.168.178.25 E4:D5:3D:81:6D:6D
NWDEV: ohne Uebereinstimmung: DS412 192.168.178.222 00:11:32:17:E0:C1
NWDEV: HTCOneChristiane gefunden: HTCOneChristiane 192.168.178.28 E8:99:C4:8B:92:AD
NWDEV: ohne Uebereinstimmung: IPHONERalfFirma 192.168.178.27 44:4C:0C:BA:65:48
NWDEV: ohne Uebereinstimmung: SkyPC2010 192.168.178.22 E0:CB:4E:55:30:83
NWDEV: Skyborgs-iPhone gefunden: Skyborgs-iPhone 192.168.178.21 3C:D0:F8:70:E2:B3
NWDEV: ohne Uebereinstimmung: homematic-ccu2 192.168.178.29 00:1A:22:02:B4:B4
In der Config-Datei die 5 Systemvariablen anlegen die später mit den Anwesenheiten gefüllt werden. (Aktuell noch statisch im Code)
Code optimieren und aufräumen
Mit den Quelltext möchte ich nicht geizen, ist aber noch Beta und funktioniert im Grunde nur nach Anpassung
Code: Alles auswählen
#!/bin/bash
# Michael Leinich 14 Juni 2013 - 22:00
# FritzBox.sh
# Version 0.4.1
# - used curl to get active devices from fritzbox
# - set sysvar on ccu via curl and ccu-xml-api
# Changed by Skyborg 14.08.2013
# ----------------------------------------------------------------------
CPWMD5=./cpwmd5
HOMEMATIC="localhost"
ADDONDIR="/usr/local/addons/cuxd"
CONFIGFILE="/usr/local/addons/cuxd/extra/FritzBox.conf"
FRITZLOGIN="/login_sid.lua"
FRITZWEBCM="/cgi-bin/webcm"
FRITZHOME="/home/home.lua"
TEMPFile="/var/tmp/FritzBox_tempfile.txt"
CURLFile=""
ANRUFLIST="/var/tmp/FritzBox_anruferliste.csv"
WLANLIST="/var/tmp/FritzBox_wlanliste.html"
# Wohin soll geloggt werden
Debug="/var/tmp/debug.txt"
# Alle Debugnachrichten Nachrichten
Debugmsg="FritzBox.sh 0.4.1 \n"
FritzBoxURL="http://fritz.box"
Username=""
Passwd=""
# Parameter 1: POST/GET Daten
# Parameter 2: (default POST) GET -> Get request
# Parameter 3: Servlet (default FRITZWEBCM)
PerformPOST(){
local loggingfile="/dev/null"
if [ "$Debug" != "" ]; then
loggingfile=$CURLFile
Debugmsg=$Debugmsg"GET/POST wind protokolliert in $CURLFile \n"
fi
# Parameter 3 ueberpruefen (URL)
if [ "$3" = "" ]; then
local URL=$FritzBoxURL$FRITZWEBCM
else
local URL=$FritzBoxURL$3
fi
# Parameter 2 ueberpruefen (POST oder GET)
if [ "$2" = "GET" ]; then
Debugmsg=$Debugmsg"GET : $1 \n"
Debugmsg=$Debugmsg"GET : URL $URL?$1 \n"
../curl -s "$URL?$1" >$loggingfile
Debugmsg=$Debugmsg"GET : Abgesendet \n"
else
Debugmsg=$Debugmsg"POST : $1 \n"
Debugmsg=$Debugmsg"POST : $URL \n"
../curl -s -d "$1" "$URL" >$loggingfile
Debugmsg=$Debugmsg"POST : Abgesendet \n"
fi
}
EndFritzBoxSkript() {
local exitcode=$1
local debugmessage=$2
if [ "$Debug" != "" ]; then
# Ausgabe in Komandozeile
echo -e "$0 EndFritzBoxSkript()
EXITCODE: $exitcode
MESSAGE : $debugmessage
LOGGING : Messages so far captured:
$Debugmsg"
# Logging in Debugfile
echo -e "$0 EndFritzBoxSkript()
EXITCODE: $exitcode
MESSAGE : $debugmessage
LOGGING Messages so far captured:
$Debugmsg" > $Debug
fi
echo $exitcode $debugmessage
exit $exitcode
}
LOGIN(){
# Downlod Login XML nach TempFile
../curl -s "$FritzBoxURL$FRITZLOGIN">$TEMPFile
SessionInfoChallenge=$(sed -n '/.*<Challenge>\([^<]*\)<.*/s//\1/p' $TEMPFile)
SessionInfoSID=$(sed -n '/.*<SID>\([^<]*\)<.*/s//\1/p' $TEMPFile)
Debugmsg=$Debugmsg"LOGIN: Challenge $SessionInfoChallenge \n"
Debugmsg=$Debugmsg"LOGIN: SID $SessionInfoSID \n"
if [ "$SessionInfoSID" = "0000000000000000" ]; then
Debugmsg=$Debugmsg"LOGIN: Keine gueltige SID - login aufbauen \n"
CPSTR="$SessionInfoChallenge-$Passwd"
MD5=`$CPWMD5 $CPSTR`
RESPONSE="$SessionInfoChallenge-$MD5"
Debugmsg=$Debugmsg"LOGIN: login senden und SID herausfischen \n"
GETDATA="?username=$Username&response=$RESPONSE"
Debugmsg=$Debugmsg"LOGIN: $GETDATA \n"
../curl -s "$FritzBoxURL$FRITZLOGIN$GETDATA">$TEMPFile
SID=$(sed -n '/.*<SID>\([^<]*\)<.*/s//\1/p' $TEMPFile)
rm $TEMPFile
else
SID=$SessionInfoSID
Debugmsg=$Debugmsg"LOGIN: Bereits erfolgreiche SID: $SID \n"
fi
if [ "$SID" = "0000000000000000" ]; then
Debugmsg=$Debugmsg"LOGIN: ERROR - Konnte keine gueltige SID ermitteln \n"
EndFritzBoxSkript 3 "Keine-gueltige-Anmeldung-moeglich-PassWortoderUser-falsch"
else
Debugmsg=$Debugmsg"LOGIN: Gueltige SID: $SID \n"
fi
}
# Lese CONFIGFILE und ersetzen KEY: Value
eval `sed '/^ *#/d;s/:/ /;' < "$CONFIGFILE" | while read key val
do
str="$key='$val'"
echo "$str"
done`
# Debug Setzte alle Parameter für Logfile
Debugmsg=$Debugmsg"Parameter CPWMD5 = $CPWMD5 \n"
Debugmsg=$Debugmsg"Parameter HOMEMATIC = $HOMEMATIC \n"
Debugmsg=$Debugmsg"Parameter ADDONDIR = $ADDONDIR \n"
Debugmsg=$Debugmsg"Parameter CONFIGFILE = $CONFIGFILE \n"
Debugmsg=$Debugmsg"Parameter FRITZLOGIN = $FRITZLOGIN\n"
Debugmsg=$Debugmsg"Parameter FRITZWEBCM = $FRITZWEBCM \n"
Debugmsg=$Debugmsg"Parameter FRITZHOME = $FRITZHOME \n"
Debugmsg=$Debugmsg"Parameter TEMPFile = $TEMPFile \n"
Debugmsg=$Debugmsg"Parameter CURLFile = $CURLFile \n"
Debugmsg=$Debugmsg"Parameter ANRUFLIST = $ANRUFLIST \n"
Debugmsg=$Debugmsg"Parameter Debug = $Debug \n"
Debugmsg=$Debugmsg"Parameter FritzBoxURL = $FritzBoxURL \n"
Debugmsg=$Debugmsg"Parameter Username = $Username \n"
Debugmsg=$Debugmsg"Parameter Passwd = $Passwd \n"
if [ "$Passwd" = "" ]; then
EndFritzBoxSkript 1 "Passwort-nicht-gesetzt-CONF-Datei-pruefen"
fi
# Wechsle in das Addonverzeichnis
export LD_LIBRARY_PATH=$ADDONDIR
cd $ADDONDIR/extra
Debugmsg=$Debugmsg"INFO: Befehl $1 $2 $3 \n"
case $1 in
"test") LOGIN
suche="true"
linie=\"DECT\"
string=$(wget -O - "$FritzBoxURL$FRITZHOME?sid=$SID" 2>/dev/null | grep $linie )
if echo "$string" | egrep -q "true" ; then
echo "TRUE: $string"
else
echo "FALSE: $string"
fi
;;
"WLAN") LOGIN
PerformPOST "wlan:settings/ap_enabled=$2&sid=$SID" "POST";;
"WLAN5") LOGIN
PerformPOST "wlan:settings/ap_enabled_scnd=$2&sid=$SID" "POST";;
"WLANGast") LOGIN
PerformPOST "wlan:settings/guest_ap_enabled=$2&sid=$SID" "POST";;
"WLANNacht") LOGIN
PerformPOST "wlan:settings/night_time_control_no_forced_off=$2&sid=$SID" "POST";;
"DECT") LOGIN
PerformPOST "dect:settings/enabled=$2&sid=$SID" "POST";;
"NACHTRUHE") LOGIN
PerformPOST "box:settings/night_time_control_enabled=$2&sid=$SID" "POST";;
"KLINGELSPERRE") LOGIN
PerformPOST "box:settings/night_time_control_ring_blocked=$2&sid=$SID" "POST";;
"RUFUMLEITUNG") LOGIN
PerformPOST "telcfg:settings/CallerIDActions$2/Active=$3&sid=$SID" "POST";;
"Diversity") LOGIN
PerformPOST "telcfg:settings/Diversity$2/Active=$3&sid=$SID" "POST";;
"ANRUFEN") LOGIN
PerformPOST "telcfg:command/Dial=$2&sid=$SID" "POST";;
"DECT200") LOGIN
PerformPOST "sid=$SID&command=SwitchOnOff&id=$2&value_to_set=$3&xhr=1" "POST" "/net/home_auto_query.lua" "DECTCOMMAND0.txt";;
"DECT200Status") LOGIN
PerformPOST "sid=$SID&command=AllOutletStates&xhr=0" "POST" "/net/home_auto_query.lua" "DECT200Status0.txt"
PerformPOST "sid=$SID&command=EnergyStats_10&id=$2&xhr=0" "POST" "/net/home_auto_query.lua" "DECT200ENERGIE0.txt";;
"WLANliste") LOGIN
echo "Step1 : WLANListe wird runterladen ..."
../curl -o $WLANLIST "$FritzBoxURL/net/network_user_devices.lua?sid=$SID"
echo "Step2 : WLANListe wird angepasst ..."
#Werte werden die Infos werden aus der HTML ausgeschnitten
more /var/tmp/FritzBox_wlanliste.html | grep '"_node"] = "landevice' -A27 -B2 >/var/tmp/FritzBox_wlanliste.cs1
#Die " und die Klammern [] werden entfernt
more /var/tmp/FritzBox_wlanliste.cs1 | sed -e 's/\["//g' -e 's/\"]//g' -e 's/\"//g' >> /var/tmp/FritzBox_wlanliste.cs2
#Die Kalemmern werden entfernt [] und pro Geräte wird eine Zeile erzeugt
while read line; do
case "$line" in
*[*)
wlandata=$(echo "$line" | sed -e 's/\[//g' -e 's/\]/ :/g' -e 's/\= {//g')
outwlan=${outwlan}'\n'${wlandata};;
*)
outwlan=$outwlan"$line";;
esac
done < /var/tmp/FritzBox_wlanliste.cs2
#Die Parameter der Netzwerkgeräte werden Zeilenweise in eine Datei geschrieben
echo -e "$outwlan" >/var/tmp/FritzBox_wlanliste.fin
#TMP-Dateien aufräumen
rm /var/tmp/FritzBox_wlanliste.cs2
rm /var/tmp/FritzBox_wlanliste.cs1
rm $WLANLIST
echo "Step3 : WLANListe wird auslesen ..."
#Leerzeilen werden entfernt und nur aktive Geräte werden erfasst
while read line; do
case "$line" in
*'active = 1'*)
wlandata2=$line
if [ -n "$outwlanact" ]; then
outwlanact=${outwlanact}'\n'${wlandata2}
else
outwlanact=${wlandata2}
fi
esac
done < /var/tmp/FritzBox_wlanliste.fin
echo -e "$outwlanact" >/var/tmp/FritzBox_wlanactive.fin
rm /var/tmp/FritzBox_wlanliste.fin
#Vergleich er ermittelten Daten mit den übergebenen CCU-Sysvars
#Aus jeder Zeile (Gerät) werden alle Parameter nacheinander in eine Datei zum Vergleich geschrieben
while read line; do
echo $line | awk -F "," '{ for (i=1; i<=NF; i++) print $i }' >/var/tmp/FritzBox_wlanactive.cs1
while read line; do
#Vegleich nach Name,Mac,IP
case "$line" in
'name ='*)
name=`echo $line | cut -f2 -d'='`;;
*'mac ='*)
mac=`echo $line | cut -f2 -d'='`;;
*'ip ='*)
ip=`echo $line | cut -f2 -d'='`;;
esac
done < /var/tmp/FritzBox_wlanactive.cs1
# Wenn bis zu 5 System-Variablen übergeben wurden, werden diese Pro Gerät verglichen
matched=0
if [ -n "$2" ]; then
if [ $2 == $name ]; then
matched=1
../curl -o $WLANLIST "http://127.0.0.1:8181/loksoft.exe?ret=dom.GetObject(\"ANW-Ralf\").State(\"1\")"
Debugmsg=$Debugmsg"NWDEV: "$2" gefunden: "$name$ip$mac" \n"
fi
fi
if [ -n "$3" ]; then
if [ $3 == $name ]; then
matched=1
../curl -o $WLANLIST "http://127.0.0.1:8181/loksoft.exe?ret=dom.GetObject(\"ANW-Christiane\").State("1")"
Debugmsg=$Debugmsg"NWDEV: "$3" gefunden: "$name$ip$mac" \n"
fi
fi
if [ -n "$4" ]; then
if [ $4 == $name ]; then
matched=1
Debugmsg=$Debugmsg"NWDEV: "$4" gefunden: "$name$ip$mac" \n"
fi
fi
if [ -n "$5" ]; then
if [ $5 == $name ]; then
matched=1
Debugmsg=$Debugmsg"NWDEV: "$5" gefunden: "$name$ip$mac" \n"
fi
fi
if [ -n "$6" ]; then
if [ $6 == $name ]; then
matched=1
Debugmsg=$Debugmsg"NWDEV: "$6" gefunden: "$name$ip$mac" \n"
fi
fi
if [ $matched == 0 ]; then
Debugmsg=$Debugmsg"NWDEV: "$6" ohne Uebereinstimmung: "$name$ip$mac" \n"
fi
done < /var/tmp/FritzBox_wlanactive.fin
echo "Step3 : Fertig" ;;
"Anrufliste") LOGIN
wget -O - "$FritzBoxURL/fon_num/foncalls_list.lua?sid=$SID&csv=" >$ANRUFLIST
echo "Step3 : Anrufliste runterladen" ;;
"Anrufliste2CCU")
LOGIN
wget -O - "$FritzBoxURL/fon_num/foncalls_list.lua?sid=$SID&csv=" >$ANRUFLIST
echo "Step3 : Anrufliste runterladen"
out="<table id='fritz'>"
count=0
anzahl=`expr $3 + 1`
while read line; do
if [ $count -eq $anzahl ]; then
break
fi
if [ "$count" -gt "0" ]; then
typ=`echo "$line" | cut -f1 -d';'`
datum=`echo "$line" | cut -f2 -d';'`
name=`echo "$line" | cut -f3 -d';'`
rufnummer=`echo "$line" | cut -f4 -d';'`
nebenstelle=`echo "$line" | cut -f5 -d';'`
eigene=`echo "$line" | cut -f6 -d';'`
dauer=`echo "$line" | cut -f7 -d';'`
echo "DATEN: $count - $rufnummer - $dauer"
out=$out"<tr><td class='fritz_"$typ"'/><td>"$datum"</td><td>"$name"</td><td>"$rufnummer"</td><td>"$nebenstelle"</td><!--<td>"$eigene"</td>--><td>"$dauer"</td></tr>"
fi
count=`expr $count + 1`
done < $ANRUFLIST
out=$out"</table>"
urlencode=$(echo "$out" | sed -e 's/%/%25/g' -e 's/ /%20/g' -e 's/!/%21/g' -e 's/"/%22/g' -e 's/#/%23/g' -e 's/\$/%24/g' -e 's/\&/%26/g' -e 's/'\''/%27/g' -e 's/(/%28/g' -e 's/)/%29/g' -e 's/\*/%2a/g' -e 's/+/%2b/g' -e 's/,/%2c/g' -e 's/-/%2d/g' -e 's/\./%2e/g' -e 's/\//%2f/g' -e 's/:/%3a/g' -e 's/;/%3b/g' -e 's//%3e/g' -e 's/?/%3f/g' -e 's/@/%40/g' -e 's/\[/%5b/g' -e 's/\\/%5c/g' -e 's/\]/%5d/g' -e 's/\^/%5e/g' -e 's/_/%5f/g' -e 's/`/%60/g' -e 's/{/%7b/g' -e 's/|/%7c/g' -e 's/}/%7d/g' -e 's/~/%7e/g')
wget -O - "http://$HOMEMATIC/addons/webmatic/cgi/set.cgi?id=$2&value=$urlencode"
echo "Step3 : Anrufliste an CCU gesendet";;
"reboot") LOGIN
PerformPOST "logic:command/reboot=../gateway/commands/saveconfig.html&sid=$SID" "POST"
PerformPOST "security:command/logout=1&sid=$SID" "POST";;
*) Debugmsg=$Debugmsg"MAIN : ERROR - Bitte wie folgt aufrufen: \n"
Debugmsg=$Debugmsg" ./FritzBox.sh BEFEHL WERT (0=aus|1=ein) \n"
Debugmsg=$Debugmsg" Verfuegbar: \n"
Debugmsg=$Debugmsg" ./FritzBox.sh WLAN [0|1] \n"
Debugmsg=$Debugmsg" ./FritzBox.sh WLAN5 [0|1] \n"
Debugmsg=$Debugmsg" ./FritzBox.sh WLANGast [0|1] \n"
Debugmsg=$Debugmsg" ./FritzBox.sh WLANNacht [0|1] \n"
Debugmsg=$Debugmsg" ./FritzBox.sh DECT [0|1] \n"
Debugmsg=$Debugmsg" ./FritzBox.sh NACHTRUHE [0|1] \n"
Debugmsg=$Debugmsg" ./FritzBox.sh KLINGELSPERRE [0|1] \n"
Debugmsg=$Debugmsg" ./FritzBox.sh ANRUFEN [(Telefonnummer z.B. **610)] \n"
Debugmsg=$Debugmsg" ./FritzBox.sh RUFUMLEITUNG [0|1|2|3(Rufumleistung)] [0|1] \n"
Debugmsg=$Debugmsg" ./FritzBox.sh Diversity [0|1|2|3(Rufumleistung)] [0|1] \n"
Debugmsg=$Debugmsg" ./FritzBox.sh DECT200 [16|17|18|19] [0|1] \n"
Debugmsg=$Debugmsg" ./FritzBox.sh Anrufliste \n"
Debugmsg=$Debugmsg" ./FritzBox.sh Anrufliste2CCU [0000(HOMEMATIC Webmatic SYSVAR ID)] [Anzahl Eintraege] \n"
Debugmsg=$Debugmsg" ./FritzBox.sh reboot \n"
EndFritzBoxSkript 4 "Falscher-Parameter-Aufruf-$1-$2-$3-$4";;
esac
EndFritzBoxSkript 0 "Erfolgreich"
Re: FritzBox 5.5 per cuxd steuern
Hallo Skyborg,
super. Ich bin immer froh, wenn man jemand findet der sich an der Weiterentwicklung beteiligt.
Räumst du deinen Code noch auf, oder soll ich da ein paar Verbesserungen machen?
Ich denke wir haben den gleichen Ansatz mein WLAN Aktiv war noch nicht ganz fertig. Ich habe bisher nur nach MAC Adressen gesucht.
ggf. können wir das kombinieren
Dann würde ich mit der nächsten Version auch ein paar Verbesserungen/Features mit reinmachen.
Fertig:
- SID zwischenspeichern. So muss nur alle 10Min ein erneuter Login gemacht werden muss (spat bis zu 3 Sek pro Aufruf)
- FritzBox auf UMTS Modus / DSL Modus stellen
super. Ich bin immer froh, wenn man jemand findet der sich an der Weiterentwicklung beteiligt.
Räumst du deinen Code noch auf, oder soll ich da ein paar Verbesserungen machen?
Ich denke wir haben den gleichen Ansatz mein WLAN Aktiv war noch nicht ganz fertig. Ich habe bisher nur nach MAC Adressen gesucht.
ggf. können wir das kombinieren
Code: Alles auswählen
# 9 Zeilen über den Treffen ausgeben wo die MAC Adresse 00.00.00.00.00.00 übereinstimmt und such nach active=1
output = `grep -B 9 -n "\"00:00:00:00:00:00\"" $path_to_curl_file`
search="[\"active\"] = \"\1\"";
# Suche nach search in ausgabe
if [ `echo $output | grep -c "$search" ` -gt 0 ]
then
echo "Success active=1 für Macadresse"
else
echo "Fail Macadresse";
fi
Fertig:
- SID zwischenspeichern. So muss nur alle 10Min ein erneuter Login gemacht werden muss (spat bis zu 3 Sek pro Aufruf)
- FritzBox auf UMTS Modus / DSL Modus stellen
Re: FritzBox 5.5 per cuxd steuern
Ihr seid super! Freue mich schon auf die neue Version! (...mangels Danke-/Like-Button spamme ich meine Freude mit diesem Post)
Re: FritzBox 5.5 per cuxd steuern
Hi Leinich,leinich hat geschrieben:Hallo Skyborg,
super. Ich bin immer froh, wenn man jemand findet der sich an der Weiterentwicklung beteiligt.
Räumst du deinen Code noch auf, oder soll ich da ein paar Verbesserungen machen?
Ich denke wir haben den gleichen Ansatz mein WLAN Aktiv war noch nicht ganz fertig. Ich habe bisher nur nach MAC Adressen gesucht.
ggf. können wir das kombinierenDann würde ich mit der nächsten Version auch ein paar Verbesserungen/Features mit reinmachen.Code: Alles auswählen
# 9 Zeilen über den Treffen ausgeben wo die MAC Adresse 00.00.00.00.00.00 übereinstimmt und such nach active=1 output = `grep -B 9 -n "\"00:00:00:00:00:00\"" $path_to_curl_file` search="[\"active\"] = \"\1\""; # Suche nach search in ausgabe if [ `echo $output | grep -c "$search" ` -gt 0 ] then echo "Success active=1 für Macadresse" else echo "Fail Macadresse"; fi
Fertig:
- SID zwischenspeichern. So muss nur alle 10Min ein erneuter Login gemacht werden muss (spat bis zu 3 Sek pro Aufruf)
- FritzBox auf UMTS Modus / DSL Modus stellen
natürlich räume ich ich den Code noch auf !!!
Da muss auch noch ein wenig was angepasst werden. Damit es zu 100% in das ursprüngliche Schema passt.
- Konfigfileanpassung für Systemvariablen der CCU
- Codeoptimierung
- An- und Abmeldefunktion für WLAN-Geräte mit Option ob nur Anmeldungen oder auch Abmeldungen durchgeführt werden sollen.
Wenn du Verbesserungsvorschläge hast, immer her damit
So der gut Bash-Programmierer bin ich leider nicht.
Habe es seit gestern Abend für mir hier erst einmal lauffähig für 2 Geräte, das somit erst der erste Test.
Aktuell läuft es
Hast du noch eine aktuellere Version als diese hier?
Dann würde ich die Anpassungen daran machen. Oder auf die nächste Version warten und das dort dann implementieren.
Will ja auch Dir keine zusätzliche Arbeit machen!!!
EDIT: Wie ich sehe verfolgen wir den gleichen Ansatz !!! Du ließt auch den Code am Ende aus.
Ich lese übrigens den Code am Ende der HTML-Datei aus Das ist Beispielhaft ein Drucker, dort suche ich dann nach
dem aktiven Geräte und Filtere auf Mac Name IP obwohl der Name schon reichen würde.:
Code: Alles auswählen
["landevice:settings/landevice/list(name,ip,mac,UID,dhcp,wlan,ethernet,active,static_dhcp,manu_name,wakeup,deleteable,source,online,speed,wlan_UIDs,auto_wakeup,guest,url,wlan_station_type,vendorname,parentname,parentuid,ethernet_port,wlan_show_in_monitor,plc,ipv6_ifid)"] = {
[1] = {
["UID"] = "landevice8529",
["_node"] = "landevice0",
["active"] = "0",
["auto_wakeup"] = "0",
["deleteable"] = "1",
["dhcp"] = "1",
["ethernet"] = "0",
["ethernet_port"] = "0",
["guest"] = "0",
["ip"] = "192.168.178.23",
["ipv6_ifid"] = "",
["mac"] = "00:15:99:91:52:BE",
["manu_name"] = "1",
["name"] = "CLX-3185FW",
["online"] = "0",
["parentname"] = "",
["parentuid"] = "",
["plc"] = "0",
["source"] = "0x1114",
["speed"] = "0",
["static_dhcp"] = "1",
["url"] = "",
["vendorname"] = "",
["wakeup"] = "0",
["wlan"] = "0",
["wlan_UIDs"] = "",
["wlan_show_in_monitor"] = "0",
["wlan_station_type"] = ""
Ich helfe gern wenn ich kann und wenn wir irgendwas besser zusammen erarbeiten können, gern!
Kannst dich gern via PN oder so melden.
Gruß Ralf aka. Skyborg
Re: FritzBox 5.5 per cuxd steuern
Ich möchte meine Fritz gerne neu starten lassen und erhalte folgenden Fehler:
~ # sh /usr/local/addons/cuxd/extra/FritzBox.sh reboot
/usr/local/addons/cuxd/extra/FritzBox.sh: 231: ../curl: not found
/usr/local/addons/cuxd/extra/FritzBox.sh: 231: ../curl: not found
/usr/local/addons/cuxd/extra/FritzBox.sh: 231: ../curl: not found
/usr/local/addons/cuxd/extra/FritzBox.sh EndFritzBoxSkript()
EXITCODE: 0
MESSAGE : Erfolgreich
LOGGING : Messages so far captured:
FritzBox.sh 0.4
Parameter CPWMD5 = ./cpwmd5
Parameter HOMEMATIC = localhost
Parameter ADDONDIR = /usr/local/addons/cuxd
Parameter CONFIGFILE = /usr/local/addons/cuxd/extra/FritzBox.conf
Parameter FRITZLOGIN = /login_sid.lua
Parameter FRITZWEBCM = /cgi-bin/webcm
Parameter FRITZHOME = /home/home.lua
Parameter TEMPFile = /var/tmp/FritzBox_tempfile.txt=
Parameter CURLFile = /var/tmp/FritzBox_curlfile.html=
Parameter ANRUFLIST = /var/tmp/FritzBox_anruferliste.csv
Parameter Debug = /var/tmp/FritzBox.log
Parameter FritzBoxURL = 192.168.0.10
Parameter Username = BoxAdmin
Parameter Passwd = 12345
INFO: Befehl reboot
LOGIN: Challenge
LOGIN: SID
LOGIN: Bereits erfolgreiche SID:
LOGIN: Gueltige SID:
GET/POST wind protokolliert in /var/tmp/FritzBox_curlfile.html=
POST : logic:command/reboot=../gateway/commands/saveconfig.html&sid=
POST : 192.168.0.10/cgi-bin/webcm
POST : Abgesendet
GET/POST wind protokolliert in /var/tmp/FritzBox_curlfile.html=
POST : security:command/logout=1&sid=
POST : 192.168.0.10/cgi-bin/webcm
POST : Abgesendet
0 Erfolgreich
Wo sucht er das curl bzw wie bekomme ich es da hin?
EDIT:
Habe neuste CuxD installiert und schon klappts, sorry
~ # sh /usr/local/addons/cuxd/extra/FritzBox.sh reboot
/usr/local/addons/cuxd/extra/FritzBox.sh: 231: ../curl: not found
/usr/local/addons/cuxd/extra/FritzBox.sh: 231: ../curl: not found
/usr/local/addons/cuxd/extra/FritzBox.sh: 231: ../curl: not found
/usr/local/addons/cuxd/extra/FritzBox.sh EndFritzBoxSkript()
EXITCODE: 0
MESSAGE : Erfolgreich
LOGGING : Messages so far captured:
FritzBox.sh 0.4
Parameter CPWMD5 = ./cpwmd5
Parameter HOMEMATIC = localhost
Parameter ADDONDIR = /usr/local/addons/cuxd
Parameter CONFIGFILE = /usr/local/addons/cuxd/extra/FritzBox.conf
Parameter FRITZLOGIN = /login_sid.lua
Parameter FRITZWEBCM = /cgi-bin/webcm
Parameter FRITZHOME = /home/home.lua
Parameter TEMPFile = /var/tmp/FritzBox_tempfile.txt=
Parameter CURLFile = /var/tmp/FritzBox_curlfile.html=
Parameter ANRUFLIST = /var/tmp/FritzBox_anruferliste.csv
Parameter Debug = /var/tmp/FritzBox.log
Parameter FritzBoxURL = 192.168.0.10
Parameter Username = BoxAdmin
Parameter Passwd = 12345
INFO: Befehl reboot
LOGIN: Challenge
LOGIN: SID
LOGIN: Bereits erfolgreiche SID:
LOGIN: Gueltige SID:
GET/POST wind protokolliert in /var/tmp/FritzBox_curlfile.html=
POST : logic:command/reboot=../gateway/commands/saveconfig.html&sid=
POST : 192.168.0.10/cgi-bin/webcm
POST : Abgesendet
GET/POST wind protokolliert in /var/tmp/FritzBox_curlfile.html=
POST : security:command/logout=1&sid=
POST : 192.168.0.10/cgi-bin/webcm
POST : Abgesendet
0 Erfolgreich
Wo sucht er das curl bzw wie bekomme ich es da hin?
EDIT:
Habe neuste CuxD installiert und schon klappts, sorry
Re: FritzBox 5.5 per cuxd steuern
Hi,
danke das du dein Script weiterentwickelt hast.
Ich habe da ein Problem, evtl habt ihr ja noch eine Idee.
Das alte Script, bei mir hauptsächlich für die Anrufliste abzuziehen verwendet, hat bis zum Umstieg auf die CCu2 einwandfrei funktioniert.
Seither meldet es falsches Passwort. habe schon einen neuen User angelegt, Rechte X mal kontrolliert, alles ohne Erfolg.
Dann dachte ich teste ich doch mal das neue Script... dies meldet ebenfalls
Wenn ich mich von "Hand" einlogge funktionieren die User einwandfrei.
Der benutzername wird ebenfalls einwandfrei übernommen
Vllt hat ja jemand die zündende Idee... Falsche Codierung evtl? wurde per SCP übertragen...
danke das du dein Script weiterentwickelt hast.
Ich habe da ein Problem, evtl habt ihr ja noch eine Idee.
Das alte Script, bei mir hauptsächlich für die Anrufliste abzuziehen verwendet, hat bis zum Umstieg auf die CCu2 einwandfrei funktioniert.
Seither meldet es falsches Passwort. habe schon einen neuen User angelegt, Rechte X mal kontrolliert, alles ohne Erfolg.
Dann dachte ich teste ich doch mal das neue Script... dies meldet ebenfalls
Code: Alles auswählen
3 Keine-gueltige-Anmeldung-moeglich-PassWortoderUser-falsch
Der benutzername wird ebenfalls einwandfrei übernommen
Code: Alles auswählen
LOGIN: ?username=ccu&response=xxx
Gruß
Fabian
------------------------------------------
299 Kanäle in 85 Geräten
CUNO,CCU Historian, Webmatic...
--------------------------------------------
Fabian
------------------------------------------
299 Kanäle in 85 Geräten
CUNO,CCU Historian, Webmatic...
--------------------------------------------
Re: FritzBox 5.5 per cuxd steuern
Bei mir funktioniert ANRUFEN nicht. Immer wenn ich ..."/FritzBox.sh ANRUFEN [**610]" über die Konsole aufrufe, hängt sich diese auf. Ein Anruf wird nicht getätigt. Kann es sein, dass die FritzBox 6840 LTE (Firmware 5.55) Probleme mit "PerformPOST "telcfg:command/Dial=$2&sid=$SID" "POST";;" hat? Eine Anrufliste erstellen klappt problemlos...
Nehme alles zurück. Die Wählhilfe stand auf Mobilteil 1. Und das wollte ich die ganze Zeit klingeln lassen. Das geht natürlich nicht...
Nehme alles zurück. Die Wählhilfe stand auf Mobilteil 1. Und das wollte ich die ganze Zeit klingeln lassen. Das geht natürlich nicht...