Skript zum umschalten des Internetmodi der Box

3dfxatwork

Neuer User
Mitglied seit
22 Jul 2005
Beiträge
112
Punkte für Reaktionen
0
Punkte
0
Hallo

ich habe einen Router (Software mit PC) na jedenfalls mache ich den nachts immer aus, da der mir zu laut ist, und wollte jetzt nen skript programmieren, dass wenn der rechner aus is die box sich einwählt.
Die Box hängt mit dem Router und dsl Modem an einem Hub an lan A.
Es ist eingestellt bei Anschluss "Internetzugang über LAN A" im Menu Internet und dann Zugangsdaten. Bei Betriebsmodi ist " Internetverbindung selbst aufbauen (NAT-Router mit PPPoE oder IP)" eingestellt. Unter Zugangsdaten ist eingestellt "Zugangsdaten werden nicht benötigt (IP)" wenn der Router an ist, d.h. es geht kein Traffic über die Box, diese einstellung habe ich nur gewählt, dass sich die box nicht immer versucht einzuwählen. Falls der Router nicht an sein sollte soll dort "Zugangsdaten werden benötigt (PPPoE)" ausgewählt werden.

So das war erstmal die Beschreibung meines Vorhabens, nun zu dem Code, da ich mit der Programmierung nicht so firm bin.
Es gibt dabei 3 Probleme die ich habe:
1. Status des Rechners überprüfen, möglich mit Ping? Edit: ja
2. Überprüfen was gerade eingestellt ist, damit die der Befehl zum Ändern nur ausgeführt wird wenn etwas zu ändern ist.
3. "Zugangsdaten" ändern.

Ich hatte hier im Forum schon mal eine Nachtschaltung für VOIP gefunden, diese hatte ich schon mal abgeändert, auf eine Überprüfung des VOIP status, dies könnte man dazu wieder adaptieren.

1: Dies werde ich gleich mal probieren ob ich dies hinbekomme.
Edit: Hier eine Möglichkeit, nich die schönste aber funktioniert
Code:
ping -c 1 -q 168.192.0.10 > aa.txt
head -n 4 aa.txt > bb.txt
tail -n 1 bb.txt > aa.txt

read zeile < aa.txt
rm aa.txt
rm bb.txt
echo $zeile

case "$zeile" in
"1 packets transmitted, 1 packets received, 0% packet loss")
echo "a";
;;
"1 packets transmitted, 0 packets received, 100% packet loss")
echo "b";
;;
esac
2: Code vom Auslesen der Webseite mit dem VOIP Status
Code:
ParseWebsite() {
export REQUEST_METHOD="GET"
export REMOTE_ADDR="127.0.0.1"
export QUERY_STRING="getpage=../html/de/menus/menu2.html&var:lang=de&var:menu=home&var:pagename=home"
cd /usr/www/html/cgi-bin
./webcm |
sed -n 's/^.*sip:status.sip[0-9].connect.*value="\([0-9]\).*/\1/p' 
}
Wenn ich richtig bin müsste man nut getpage verändern und die sed zeile. Die neue Zeile mit getpage müsste dann so aussehen:
Code:
export QUERY_STRING="getpage=../html/de/menus/menu2.html&var:lang=de&var:menu=internet&var:pagename=pppoe&var:activtype=pppoe"
Leider weis ich nicht wie ich jetzt wie ich den wert auslesen kann ob "Zugangsdaten werden benötigt (PPPoE)" angeklickt ist oder nicht. Habe gerade mal in den Quellcode der Seite geschaut, da blicke ich irgendwie nich so schnell durch.

Edit2: Hier hab ich mal noch am ende des Quelltextes dies gefunde, vielleich ich da eins das gesuchte von ?
Code:
<input type="hidden" name="connection0:settings/type" value="pppoe" id="uiPostType">
<input type="hidden" name="connection0:pppoe:settings/idle" value="0" id="uiPostPppIdleTimeout">
<input type="hidden" name="connection0:pppoe:settings/mode" value="lcp" id="uiPostPppMode">
<input type="hidden" name="sar:settings/encapsulation" value="dslencap_ether" id="uiPostEncaps" disabled>
<input type="hidden" name="sar:settings/autodetect" value="1" id="uiPostAutodetect" disabled>
<input type="hidden" name="sar:settings/dslencap_ether/use_dhcp" value="0" id="uiPostSarDhcp" disabled>
<input type="hidden" name="sar:settings/dslencap_ether/ipaddr" value="169.254.1.2" id="uiPostSarAddr" disabled>
<input type="hidden" name="sar:settings/dslencap_ether/netmask" value="255.255.0.0" id="uiPostSarMask" disabled>
<input type="hidden" name="sar:settings/dslencap_ether/gateway" value="169.254.1.6" id="uiPostSarGate" disabled>
<input type="hidden" name="sar:settings/dslencap_ether/dns1" value="217.237.149.225" id="uiPostSarDns0" disabled>
<input type="hidden" name="sar:settings/dslencap_ether/dns2" value="194.25.2.129" id="uiPostSarDns1" disabled>
<input type="hidden" name="box:settings/ata_mode" value="1" id="uiPostAta">
<input type="hidden" name="box:settings/ManualDSLSpeed" value="0" id="uiPostSpeedManu" disabled>
<input type="hidden" name="box:settings/dslbridge_if_routing/activated" value="0" id="uiPostRouterBridge" disabled>
<input type="hidden" name="box:settings/fullbridge/activated" value="0" id="uiPostFullBridge" disabled>
<input type="hidden" name="box:settings/dhcpclient/use_static_dns" value="1" id="uiPostUseDns" disabled>
<input type="hidden" name="interfaces:settings/lan0/dhcpclient" value="0" id="uiPostDhcpc" disabled>
<input type="hidden" name="interfaces:settings/lan0/ipaddr" value="168.192.0.2" id="uiPostIpaddr" disabled>
<input type="hidden" name="interfaces:settings/lan0/netmask" value="255.255.255.0" id="uiPostNetmask" disabled>
<input type="hidden" name="box:settings/gateway" value="168.192.0.1" id="uiPostGateway" disabled>
<input type="hidden" name="box:settings/dns0" value="192.168.180.1" id="uiPostDns0" disabled>
<input type="hidden" name="box:settings/dns1" value="192.168.180.2" id="uiPostDns1" disabled>

<input type="hidden" name="var:lanip" value="" id="uiPostLanIp">
<input type="hidden" name="var:activtype" value="pppoe" id="uiPostActivType">
<input type="hidden" name="var:isFirst" value="0" id="uiIsFirst">
<input type="hidden" name="var:newipaddr" value="" id="uiPostNewIpaddr" disabled>
<input type="hidden" name="var:setAuto" value="" id="uiPostSetAuto">
<input type="hidden" name="var:ifmode" value="modem" id="uiPostIfMode">

3:
Code:
DoIt() {
export REQUEST_METHOD="POST"
export REMOTE_ADDR="127.0.0.1"
export CONTENT_TYPE="application/x-www-form-urlencoded"
POST_DATA="sip:settings/sip$1/activated=$2"
export CONTENT_LENGTH=${#POST_DATA}
echo -n "$POST_DATA" | /usr/www/html/cgi-bin/webcm > /dev/null 
}
Hier müsste man eigentlich nur die Zeile POST_DATA verändern, oder liege ich falsch? Was ich der Funktion übergeben muss, dass bekomm ich dann schon allein heraus.

Würde mich über eure Hilfe freuen, melde mich nochmal falls ich 1. hinbekomme.
Danke schon mal für eure Hilfe.

MFG Matthias
 
Zuletzt bearbeitet:
Hallo

leider hat sich hier noch keiner gemeldet, ich will ja nich stressen, aber es wäre nett, wenn jemand ne Idee dazu hat, diese mal zu posten, bin auch für ganz andere Lösungswege offen.

MFG Matthias
 
Holen Sie sich 3CX - völlig kostenlos!
Verbinden Sie Ihr Team und Ihre Kunden Telefonie Livechat Videokonferenzen

Gehostet oder selbst-verwaltet. Für bis zu 10 Nutzer dauerhaft kostenlos. Keine Kreditkartendetails erforderlich. Ohne Risiko testen.

3CX
Für diese E-Mail-Adresse besteht bereits ein 3CX-Konto. Sie werden zum Kundenportal weitergeleitet, wo Sie sich anmelden oder Ihr Passwort zurücksetzen können, falls Sie dieses vergessen haben.