NET-PwrCtrl HOME mit Fritzbox schalten?

tomde
Beiträge: 4
Registriert: Sonntag 10. Juli 2011, 00:24

NET-PwrCtrl HOME mit Fritzbox schalten?

Beitrag von tomde » Mittwoch 13. Juli 2011, 20:21

Erstmal dickes Lob: Einrichtung im Netzwerk, Steuerung mit Browser IE, FF und auch NET-PwrCtrl.exe für Windows7x64 funktionieren auf Anhieb und tadellos. Auch der FW Upgrade auf 3.3 - ist verständlich beschrieben und verlief fehlerfrei.

Ich möchte nun mit der Fritzbox (via Telnet/Script) die Steckdosenleiste schalten. Dazu versuche von der Fritzbox das WebIf (z.B. die ctrl.htm oder mobile.htm) der Steckdose zu bedienen oder irgendwie die UDP Steuerung zu verwenden, scheitere aber an verschieden Stellen:

1.
/usr/bin/wget -q -O - "http://ip_adresse/ctrl.htm"
liefert: get: server returned error: HTTP/1.1 401 Unauthorized

Das erscheint logisch, weil die Anmeldung fehlt...
Weiß jemand wie ich den Post für die Anmeldung durchbringen könnte?

Mit dem folgenden Shell Script habe ich mal in einer älteren Fritzbox-Firmware das Passwort für die Fritzbox posten können, weiß aber nicht, wie ich das für die Steckdose umbauen muss.:

Code: Alles auswählen

# POST
export REQUEST_METHOD="POST"
export REMOTE_ADDR="ip_adresse"
export CONTENT_TYPE="application/x-www-form-urlencoded"
POST_DATA="login:command/password=$PASSWD"
export CONTENT_LENGTH=${#POST_DATA}
echo -n "$POST_DATA" | /usr/www/html/cgi-bin/webcm > /dev/null
# GET
export REQUEST_METHOD="GET" 
export QUERY_STRING="getpage=SeitenURL"
/usr/www/html/cgi-bin/webcm # zeigte die Seite an 
Kann vielleicht jemand helfen?

2.
das netcat der Fritzbox:
echo "Sw_on1user1abcd" | nc ip_adresse 75
bleibt hängen, bzw. hier liefert die Fritzbox keine Antwort zurück. (user1-Passwort und Passwort für die UDP-Kommunikation habe ich mal auf abcd gesetzt)

3. Wie kann ich denn die UDP-Steuerung von der Fritzbox aus nutzen?

Hat jemand einen Tipp zu 1,2,3 ?

Danke Tom

temp
Beiträge: 2
Registriert: Freitag 3. Februar 2012, 11:42

Re: NET-PwrCtrl HOME mit Fritzbox schalten?

Beitrag von temp » Freitag 3. Februar 2012, 11:55

Code: Alles auswählen

#/bin/bash

function usage () {
    echo "netpower.sh 1|2|3 on|off"
}
 
if [ "$1" = "1" ] ; then
    SWITCH="F0"
elif [ "$1" = "2" ] ; then
    SWITCH="F1" 
elif [ "$1" = "3" ] ; then
    SWITCH="F2" 
else
    usage 
    exit 1 
fi

if [ "$2" = "on" ] ; then
    ACTION="O"
elif [ "$2" = "off" ] ; then
    ACTION="I"
else
    usage  
    exit 1 
fi

wget --quiet --http-user=user --http-password=user --post-data="x=10&${SWITCH}=${ACTION}" --output-document=/dev/null http://netpower1.local.de/mobile.htm


temp
Beiträge: 2
Registriert: Freitag 3. Februar 2012, 11:42

Re: NET-PwrCtrl HOME mit Fritzbox schalten?

Beitrag von temp » Donnerstag 9. Februar 2012, 10:55

Code: Alles auswählen

#/bin/bash
# To toggle switch: POSTDATA x=10&SWITCH=ACTION
# Switch: F0, F1, F2
# Action: any character

function usage () {

    echo "netpower.sh on|off|status [ [1] [2] [3] ]"
    echo " If no switch is given, all switches are swichtes on or off."
}

# Print status and set S1, S2, S3
function status () {
    STATUS=`wget  --http-user=user --http-password=user --output-document=- http://netpower1.psysteme.de/mobile.htm 2>/dev/null`
    if [ "$?" != "0" ] ; then
        echo "Getting the status failed!"
        exit 1
    fi
    j=1
    for i in $STATUS ; do
        SWITCH=`echo $i | egrep "value=I|value=O"`
        if [ "$SWITCH" == "value=O" ] ; then
            echo "Switch $j is OFF."
            export S${j}=off
            j=$((j+1))
        elif [ "$SWITCH" == "value=I" ] ; then
            echo "Switch $j is ON."
            export S${j}=on
            j=$((j+1))
        fi
    done
}

status

# Command line: action
if [ "$1" = "on" ] ; then
    ACTION="on"
elif [ "$1" = "off" ] ; then
    ACTION="off"
elif [ "$1" = "status" ] ; then
    status
    exit $?
else
    usage
    exit 1
fi
shift

# All switches
if [ "$*" = "" ] ; then

    if [ "$S1" != "$ACTION" ] ; then
       SWITCH1="F0"
    fi
    if [ "$S2" != "$ACTION" ] ; then
        SWITCH2="F1"
    fi
    if [ "$S3" != "$ACTION" ] ; then
        SWITCH3="F2"
    fi
else # Switches given on command line
    for i in "$@" ; do
        if [ "$i" = "1" ] ; then
            if [ "$S1" != "$ACTION" ] ; then
               SWITCH1="F0"
            fi
        elif [ "$i" = "2" ] ; then
            if [ "$S2" != "$ACTION" ] ; then
                SWITCH2="F1"
            fi
        elif [ "$i" = "3" ] ; then
            if [ "$S3" != "$ACTION" ] ; then
                SWITCH3="F2"
            fi
        else
            usage
            exit 1
        fi
    done
fi
# Exit if nothing to do
if [ "${SWITCH1}${SWITCH3}${SWITCH3}" = "" ] ; then
    echo "Nothing to do."
    exit 0
fi

# Switch the switch
for i in $SWITCH1 $SWITCH2 $SWITCH3 ; do
    NUMBER=${i#F}
    echo "Toggle switch $((NUMBER += 1)) ..."
    wget --quiet --http-user=user --http-password=user --post-data="x=10&${i}=X" --output-document=/dev/null  http://netpower1.psysteme.de/mobile.htm
    if [ "$?" !=  "0" ] ; then
        echo "Setting switch $i failed!"
    fi
done

status


Antworten