To main content

Reconnect-Skript für Kabelmodem Motorola SBV5121E

Veröffentlicht von Benjamin Marwell am

Wer ab und zu mit JDownloader und einem Kabelmodem unterwegs ist, ärgert sich möglicherweise über das Unvermögen des Reconnects. Anbei ist ein Script, das abhilfe schafft.

Wann gibt es eine neue IP?

Das Kabelmodem vergibt nur eine neue IP-Adresse, wenn ein anderes Gerät an diesem angeschlossen wurde. Bei den meisten hängt zu Hause eine FritzBox! vor dem Kabelmodem. Bei mir handelt es sich um eine FritzBox 7050. Also muss deren MAC-Adresse geändert werden, bevor man eine neue IP-Adresse erhält. Damit suggeriert man dem Kabelmodem, dass ein anderes Gerät angeschlossen wurde.

Das Reconnect-Skript

Man erstellt eine Datei in seinem Home-Ordner, etwa vim /home/user/bin/reconnect.sh  und macht sie mit chmod +x /home/user/bin/reconnect.sh  ausführbar. Folgender Inhalt führt zum Reconnect:

#!/bin/bash

# ====================================
# Das Passwort bitte innerhalb der
# Anführungszeichen eintragen
# ====================================
BOX_PWD="MeinGeheimesPasswort"

# ====================================
# Nicht unterhalb dieser Zeile ändern!
# ====================================
BOX_PWD=$(echo "$BOX_PWD" | perl -MURI::Escape -lne 'print uri_escape($_)')
IP_OLD=$(w3m -dump heise.de/ip | grep -A 2 "kommt von der IP-Adresse" | tail -n 1)
DAT_TIM=$(date +"%F %T")
MINUTEN=$(date +%M)
SEKUNDEN=$(date +%S)
MAC_ADDR="00:04:0e:79:bc:a1" # original
MAC_NEW="00:04:0e:79:$MINUTEN:$SEKUNDEN"
CURL_OPT="-s -b rec.txt -c rec.txt"

# Benutzer über Reconnect benachrichtigen.
notify-send -u normal -t 7000 -c reconnect "Reconnect" "In wenigen sekunden wird ein Reconnect durchgeführt. Eine Internetverbindung wird für etwa 70 Sekunden nicht zur Verfügung stehen."
echo -e "$DAT_TIM\tNeue MAC: $MAC_NEW\tAlte IP: $IP_OLD" >> /home/bmhm/bin/reconnect.log

# Kabelmodem SB5121E neu starten
# Das Passwort ist immer gleich...
curl $CURL_OPT "http://192.168.100.1/loginData.htm?loginUsername=admin&loginPassword=motorola&LOGIN_BUTTON=Login" >/dev/null
curl $CURL_OPT "http://192.168.100.1/reset.htm?reset_modem=Restart+Cable+Modem" >/dev/null

sleep 5

# Hier wird der Fritz!Box eine neue MAC zugewiesen.
# Login ist nur bei gesetztem Passwort notwendig.
if [[ -n"x$BOX_PWD" ]]; then
curl $CURL_OPT "http://fritz.box/cgi-bin/webcm" -d "getpage=../html/de/menus/menu2.html" -d "login:command/password=$BOX_PWD">/dev/null
fi
curl $CURL_OPT "http://fritz.box/cgi-bin/webcm" -d "getpage=../html/de/menus/menu2.html" -d "env:settings/macdsl=$MAC_NEW">/dev/null

sleep 10

Einbinden in JDownloader

Script einbinden

Im Einstellungsdialog hangelt man sich bis zum Reconnect vor. Dort klickt man auf den Reiter "externes Script" und gibt den Pfad an. Bei mir ist es ein anderer, aber das ist im Endeffekt nicht so wichtig. Was aber schon wichtig ist: Nach dem das Script eingetragen wurde, darf hier kein anderer Tab aktiviert werden!

JDownloader Reconnect-Script
JDownloader Reconnect-Script

Einstellungen anpassen

Da der Reconnect mit Kabelmodem länger dauert, als mit einem DSL-Modem, sollte man noch die Wartezeit für die neue IP erhöhen. Sonst denkt JDownloader, der Reconnect war nicht erfolgreich und versucht einen weiteren. Dazu gibt man unter "Erweitert" eine Wartezeit von 75 Sekunden an, bis die IP geprüft werden kann. Damit er nicht sofort wieder aufhört, kann man unter "auf neue IP warten" noch die Zeit angeben, in der weitere IP-Prüfungen stattfinden. Ist diese Zeit abgelaufen und der Wiederholungszähler noch nicht auf null, wird ein weiterer Reconnect versucht.

JDownloader Reconnect-Einstellungen
JDownloader Reconnect-Einstellungen

Testen des Scripts

Ihr ruft das Script einfach in der Bash auf oder klickt im JDownloader auf "Reconnect". Unter der URL heise.de/ip könnt ihr dann kontrollieren, ob vorher und hinterher eine andere IP-Adresse angegeben wird.

Jdownloader Logo © jdownloader.org - distributed under GNU GPL.