[Frage] Speedport 921V curl Reboot ?

dkoopmans

Neuer User
Mitglied seit
20 Feb 2012
Beiträge
5
Punkte für Reaktionen
0
Punkte
0
Hallo zusammen,

da ich immer wieder mal das Problem habe, dass meine Telefone am Speedport 921V einfach nicht mehr klingeln, wenn jemand versucht anzurufen, frage ich mich, ob man den Speedport mittels curl auch rebooten kann, in etwas so, wie man damit auch die Internetverbindung trennen kann.

Gefunden habe ich dazu bisher nichts, aber vielleicht weiss ja doch jemand, ob das geht und wie.

Grüße
Dennis
 
Hallo zusammen,

da ich immer wieder mal das Problem habe, dass meine Telefone am Speedport 921V einfach nicht mehr klingeln, wenn jemand versucht anzurufen, frage ich mich, ob man den Speedport mittels curl auch rebooten kann, in etwas so, wie man damit auch die Internetverbindung trennen kann.

Gefunden habe ich dazu bisher nichts, aber vielleicht weiss ja doch jemand, ob das geht und wie.

Grüße
Dennis

Hallo,

die libcurl kann keine Metatags auswerten, daher wird mechanize benötigt um den Speedport W 921V per script zu rebooten.
Mit python würde ein script in etwa so aussehen:

Code:
#!/usr/bin/python
#
import re
import mechanize
import sys, logging, time
import socket
import simplejson

socket.setdefaulttimeout(60)
br = mechanize.Browser()

print "connecting"
try:
	br.open("https://speedport.ip/html/login/")
except:
	print "connection failed"
	sys.exit(1)

#print rsp.info()
#print rsp.read()
# loginstate","varvalue":"0

while True:
	br.set_handle_referer(False)
	br.addheaders = [('Referer', 'https://speedport.ip/html/content/config/problem_handling.html')]
	rsp = br.open('https://speedport.ip/data/SecureStatus.json')
	d = simplejson.loads(rsp.read())
	l = d[8].values()
	if l[0] != 'loginstate':
		print "invalid status response"
		sys.exit(99)
	if l[1] == '0':
		break
	time.sleep(10)

login = 'password={dein passwort}&showpw=0'

br.set_handle_referer(False)
br.addheaders = [('Referer', 'https://speedport.ip/html/login/')]
print "login"
while True:
	rsp = br.open('https://speedport.ip/data/Login.json', login)
	if rsp.read().find('success'):
		break
	time.sleep(10)

#print rsp.info()
#print rsp.read()
reboot = 'reboot_device=true'
print "rebooting"
# sys.exit(0)
br.set_handle_referer(False)
br.addheaders = [('Referer', 'https://speedport.ip/html/content/config/problem_handling.html')]
try:
	rsp = br.open('https://speedport.ip/data/Reboot.json', reboot)
	if rsp.read().find('Speedport W 921V'):
		print "interface busy"
		sys.exit(2)
	

#ssl.SSLError: The read operation timed out
except:
	if str(sys.exc_info()[1]).find('timed out'):
		print "reboot successful"
		sys.exit(0)
	else:
		print "reboot failed"
		sys.exit(3)

Das Script bleibt solange in einer Schleife, bis ein connect, login und der reboot initiiert werden konnten, wer das nicht will, muss in den while Schleifen einen vorzeitigen Abbruch implementieren.

Es ist allerdings ein ziemlicher Aufwand nötig um das z.B. mit einer gefreetzten Fritzbox zu realisieren. Dazu ist ein Jenny Debian Linux auf einem USB-Stick nötig. Alternativ gibt es da natürlich auch Cygwin oder eine direkte Installation von Python auf dem Windows-PC.

http://freetz.org/wiki/packages/debootstrap

Mit 'chroot /var/media/ftp/uStor01/debian bash' startet man eine shell im debian.
Dort installiert man die nötigen Pakete mit apt-get, also python, mechanize und simplejson, dann ist man in der Lage mit dem chroot Kommando z.B. in der crontab der Fritzbox das Python Script aufzurufen.

chroot /var/media/ftp/uStor01/debian /home/w921v/reboot.py

Cooler Nebeneffekt ist halt ein schickes uraltes Debian auf der Fritzbox zu haben, ich starte damit auch den ntp-server zum Datumsabgleich.
Gestestet habe ich das mit der aktuellen Firmware für den Speedport W 921V:

Firmware-Version
1.24.000
Boot-Code-Version
v1.09.01
DSL-Modem-Code-Version
5.3.6.4.1.2
DECT-Basisstation-Version
CM20_V2031_0208.h
Hardware-Version
01

Also, dann...
An die Arbeit ;)
 

Statistik des Forums

Themen
245,762
Beiträge
2,239,376
Mitglieder
372,973
Neuestes Mitglied
DeSpo_0108
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.