Moin,
Ooops, da lag ich daneben. Ich hatte vergessen, dass ich bei meiner Box den ds-mod mit einigen Veränderungen auf der Box habe (unter anderem ohne den normalen AVM-Webserver).
Den AVM-Webserver konnte ich nicht dazu "überreden" mitzuspielen. Da sehe ich nur die Möglichkeit, dass über den "externen" Weg zu machen. Wenn du eine "halbwegs statische" Umgebung hast (bei der sich die Regelnummern nicht ändern), würde ich dir vorschlagen, die "Regel-Nummer" einmal herauszufinden und dann nur den letzten Aufruf mit wget und der IP zu nutzen (die ruleX dann vorgeben). Nach einer Änderung im Regelwerk müsstest du das dann nochmal prüfen und anpassen oder schauen, dass du das "komplette Skript" angepasst bekommst, um doch vorher mit der ersten wget Abfrage die "rule" zu bestimmen.
Jörg
EDIT:
Ich denke, folgendes könnte für dich klappen, wenn es z.B. in der debug.cfg steht:
Damit wird dein ursprüngliches cgi-Verzeichnis "umgebogen" und ein neues cgi eingebaut.
Ein Aufruf mittels
sollte das gewünschte Ergebnis bringen.
EDIT2 Funktioniert zwar im Browser, aber nicht mittels wget wegen des "onLoad" (den ich nur wegen der fehlenden "post"-Fahigkeit des wget auf der Box selbst "eingebaut" hatte...)
Ooops, da lag ich daneben. Ich hatte vergessen, dass ich bei meiner Box den ds-mod mit einigen Veränderungen auf der Box habe (unter anderem ohne den normalen AVM-Webserver).
Den AVM-Webserver konnte ich nicht dazu "überreden" mitzuspielen. Da sehe ich nur die Möglichkeit, dass über den "externen" Weg zu machen. Wenn du eine "halbwegs statische" Umgebung hast (bei der sich die Regelnummern nicht ändern), würde ich dir vorschlagen, die "Regel-Nummer" einmal herauszufinden und dann nur den letzten Aufruf mit wget und der IP zu nutzen (die ruleX dann vorgeben). Nach einer Änderung im Regelwerk müsstest du das dann nochmal prüfen und anpassen oder schauen, dass du das "komplette Skript" angepasst bekommst, um doch vorher mit der ersten wget Abfrage die "rule" zu bestimmen.
Jörg
EDIT:
Ich denke, folgendes könnte für dich klappen, wenn es z.B. in der debug.cfg steht:
Code:
mkdir /var/tmp/mycgi-bin
cd /var/tmp/mycgi-bin
for cgi in `ls /usr/www/cgi-bin/*` ; do
ln -s $cgi .
done
cat > /var/tmp/mycgi-bin/changeportfwip <<NEWEOF
#! /bin/sh
NEUEIP="\$(echo "\$QUERY_STRING" | sed -e 's/^.*IP=//' -e 's/&.*$//')"
TESTSTRING="\$(echo "\$QUERY_STRING" | sed -e 's/^.*NAME=//' -e 's/&.*$//')"
myrule="\`wget -q -O - "http://fritz.box/cgi-bin/webcm?getpage=..%2Fhtml%2Fde%2Fmenus%2Fmenu2.html&errorpage=..%2Fhtml%2Fde%2Fmenus%2Fmenu2.html&var%3Alang=de&var%3Apagename=portfw&var%3Amenu=internet&var%3Apagemaster=" | grep -A 5 \$TESTSTRING | grep "uiDoEdit" | sed "s/.*uiDoEdit('\(.*\)').*/\1/"\`"
echo 'Content-Type: text/html;'
echo
echo '<html>'
echo '<head>'
echo '<title>Change IP of Portforwarding Rule</title>'
echo '</head>'
echo -n "<body onLoad='document.getElementById(\"uiPostForm\").submit();'>"
cat << EOF
<form method="POST" action="http://fritz.box/cgi-bin/webcm" target="_self" id="uiPostForm">
<input type="hidden" name="getpage" value="../html/menus/menu2.html" id="uiPostGetPage">
<input type="hidden" name="errorpage" value="../html/index.html" id="uiPostErrPage">
<input type="hidden" name="var:menu" value="internet" id="uiPostMenu">
<input type="hidden" name="var:rule" value="\${myrule}" id="uiPostPageName">
<input type="hidden" name="var:isnew" value="0" id="uiPostPageTitle">
<input type="hidden" name="var:pagename" value"=portrule">
<input type="hidden" name="var:menutitle" value="Home" id="uiPostMenuTitle">
<input type="hidden" name="forwardrules:settings/\${myrule}/fwip" value="\$NEUEIP" >
</form>
</body>
</html>
EOF
NEWEOF
chmod +x changeportfwip
mount -o bind /var/tmp/mycgi-bin /usr/www/all/cgi-bin/
Ein Aufruf mittels
Code:
http://fritz.box/cgi-bin/changeportfwip?IP=192.168.178.12&NAME=MeinBezeichner
EDIT2 Funktioniert zwar im Browser, aber nicht mittels wget wegen des "onLoad" (den ich nur wegen der fehlenden "post"-Fahigkeit des wget auf der Box selbst "eingebaut" hatte...)
Zuletzt bearbeitet: