Remote Restart der FBF

Hab nochmal was geändert.

Ist die Datei /var/tmp/redial vorhanden?
Wenn ja, probier mal im Telnet alle Befehle unter REDIALEOF manuell einzugeben.
Die unteren 4 Zeilen sind dann die Holzhammermethode, falls es wirklich an den OEMS liegt...
 
Da hatten wir wohl beide Recht. :mrgreen:
Code:
lrwxrwxrwx    1 root     root           12 Sep  8  2002 html -> /usr/www/avm
Ich kann mit "mount -o bind" nur Dateien mounten die schon existieren...
Code:
/var/tmp # ./test
+ cat
+ chmod 777 /var/tmp/redial
+ touch /var/html/cgi-bin/redial
touch: /var/html/cgi-bin/redial: Read-only file system
+ mount -o bind /var/tmp/redial /var/html/cgi-bin/redial
mount: Mounting /var/tmp/redial on /var/html/cgi-bin/redial failed: No such file or directory
+ mount -o bind /var/html/cgi-bin/ /usr/www/1und1/cgi-bin/
+ mount -o bind /var/html/cgi-bin/ /usr/www/all/cgi-bin/
mount: Mounting /var/html/cgi-bin/ on /usr/www/all/cgi-bin/ failed: No such file or directory
+ mount -o bind /var/html/cgi-bin/ /usr/www/avm/cgi-bin/
+ mount -o bind /var/html/cgi-bin/ /usr/www/html/cgi-bin/
Außerdem scheint mit dem cat was nicht zu stimmen...
Code:
(
cat << 'REDIALOFF'
#! /bin/sh
..
REDIALOF
) > /var/tmp/redial
MfG Oliver
 
Kann sein dass es einige der ordner nur auf ner 7170 gibt.
Ich wollte alle Eventualitäten abdecken ;-)

Das mit dem cat funktioniert so, ich hab mich eben erbarmt und es getestet ;-)
Nur das mit dem Passwort klappt irgendwie nicht...
Die neue Einwahl tut's
 
Und was mache ich nun? Das Script von oben nun nehmen oder wie?
 
Hm weiss niemand rat?
 
was funktioniert denn am script von oben nicht?
 
Naja ich kann weder sagen was funktioniert .. noch was nicht funktioniert. Ich kann nur sagen das wenn ich im Browser den link aufrufe das dort immer kommt das nichts gefunden wurde. Das heisst dann wohl das die date nicht erstellt wurde :(
 
Problem mit touch?

Hi shadow000,

ich habe genau die gleichen Probleme, die hier beschrieben wurden :noidea:

So, ich habe mir jetzt mal die Mühe gemacht, die Befehle aus dem Script im Telnet einzutippen (obwohl ich leider nicht besonders viel davon verstanden habe).

Mir ist aufgefallen, dass bei der Zeile mit "touch ..." die Meldung
Code:
touch: /var/html/cgi-bin: Read-only file system
ausgegeben wird.

Bei der anschließenden "mount ..." Zeile kommt dann folgendes:
Code:
mount: Mounting /var/tmp/redial on /var/html/cgi-bin/redial failed: No such file or directory

Kann es sein, dass hier der Fehler liegt???

Bitte prüfe das doch nochmal! Ich würde das Script wirklich gerne verwenden.

Achja und noch etwas:
Ich habe versucht, die Passwort-Abfrage aus dem Script zu entfernen, woraufhin mir die FritzBox sagte, sie sei unauthorisiert verändert worden, und müsse nun komplett zurückgesetzt werden. Könntest du daher vielleicht noch eine Version des Scripts ohne Passwortabfrage erstellen?

Cu, Chris
 
Hiermit gehts bei mir...

Hi!


Nach der Inspiration mit dem CGI-Interface, habe ich ein eigenes Script geschrieben.

Das Problem ist, dass das Verzeichnis /var/html/cgi-bin/ (und die ganze "Linkfarm", die dazugehört) ein Teil des Readonly-Squashfs ist.

Da kann man dann entweder ne komplett neue Firmware zusammenbauen, oder aber, zumindest ging es bei meiner FB 7050 damit,
folgendes Script zur /var/flash/debug.cfg hinzufügen:

#Script zum Neuverbinden - Ulrich 11.10.2006 Himmelpforten

cat >/var/tmp/system_status_modified <<'ULI_MOD_EOF'
#!/bin/sh
if [ "$1" = "neuVerbinden" ]; then

if [ "$2" != "PASSWORT" ]; then
echo -e "Content-type: text/html; charset=iso-8859-1\n<html><body><br>\n"
echo -e "<strong>Passwort falsch</strong></body><html>\n"
exit 0
fi

echo -e "Content-type: text/html; charset=iso-8859-1\n<html><body><br>\n"
echo -e "Der dsld wird jetzt angehalten...<br>"
/sbin/dsld -s
echo -e "<p>Der dsld wird jetzt neugestartet...<br>"
/sbin/dsld -n
echo -e "\n<script type=\"text/javascript\">document.location.href=\"/cgi-bin/system_status\?geschafft\";</script>\n"
exit 0

elif [ "$1" = "geschafft" ]; then
echo -e "Content-type: text/html; charset=iso-8859-1\n<html><body><br>\n"
echo -e "<p><strong>Die Verbindung wurde neu gestartet!</strong><br></body></html>"
exit 0
fi

ULI_MOD_EOF

cat /var/html/cgi-bin/system_status >>/var/tmp/system_status_modified
chmod 777 /var/tmp/system_status_modified

mount -o bind /var/tmp/system_status_modified /var/html/cgi-bin/system_status

Ich habe ein wenig rumgetrickst, und über das schon vorhandene CGI-Script system_status rübergemounted. Auf die Art sieht der CGI-Server das User-Script aus /var/tmp.


Zum Benutzen müsst Ihr einfach nur im Browser folgende URL aufrufen:
http://fritz.box/cgi-bin/system_status?neuVerbinden+PASSWORT
"http://fritz.box/cgi-bin/system_status?neuVerbinden+PASSWORT"

(PASSWORT kann man natürlich im Script ändern, ansonsten nimmt man wörtlich "PASSWORT" (nicht sehr originell) oder schreibt die zweite If-Abfrage einfach raus)


Viel Erfolg, und wenn es funktioniert, könnt Ihr es gerne weiterverbreiten...
Ne Rückmeldung im Forum wäre ganz schön.
 
Hi Uli,

schön, dass sich noch jemand mit der Sache beschäftigt.

Kannst du mir vielleicht noch 3 Fragen beantworten für jemanden, der damit noch nicht so viel experimentiert hat:

- Ist es normal, dass nach jeder Aktion über Telnet (auch wenn man einfach nur "dsld -s" und anschließend wieder "dsld" eingibt) in der Weboberfläche dick und rot erscheint "Die FritzBox wurde unauthorisiert verändert..."?

- Muss man dieses Script einfach nur so wie es ist in die debug.cfg einfügen (nvi öffnen und dann in der DOS-Box Copy&Paste) oder gibt es da noch etwas zu beachten?

- Warum verwendest du "dsld -n" wo doch eigentlich "dsld" der Befehl zum Starten ist, oder?

Gruß, Chris
 
Hi, Chris!


Zu Deinen Fragen:

> "Ist es normal, dass [...]" (Die Warnmeldung auf der FritzBox-Homepage:

Ja, damit will der Hersteller nur klarmachen, dass er sich nicht mehr für die Problemlösung zuständig hält, falls ein Benutzer sich seine Software kaputtfrickeln sollte. Bei mir steht auf der Hauptseite: "In Ihrer FRITZ!Box wurden vom Hersteller nicht unterstützte Änderungen durchgeführt. Weitere Informationen.[...]"


> Muss man dieses Script einfach nur so wie es ist in die debug.cfg einfügen (nvi öffnen und dann [...]

Ja, so ist es. Wenn Du statt wörtlich "PASSWORT" eine eigene Zeichenfolge verwendest, schreibst Du das halt stattdessen hin. In der URL beim Aufrufen sowie in der debug.cfg, in der If-Abfrage halt.
Wobei die ganze zweite Abfrage strenggenommen überflüssig ist, wenn man gleich das Passwort als erstes Argument in der ersten If-Überprüfung abfragt... Aber, wenn Du nicht viel verändern willst, kannst Du das Script einfach so nehmen.

Statt mit Telnet kannste das auch mit tftp hochladen, wenn Du auf Deinem Desktop-PC einen TFTP-Server installierst.
Wenn Dein Hauptrechner mit Ubuntu läuft: apt-get install atftpd, und die Sache ist geritzt. (Den startest Du dann von der Shell z.B. mit "sudo atftpd --daemon /tmp". Die hoch- oder downzuloadenden Dateinen kommen dann kurzfristig nach /tmp kopiert; /tmp, weil tftpd will laut man-page ein "world-readable/writable"-Verzeichnis sehen.
Unter Windoofs gibts auch auch entsprechende tftpd-Serverprogramme.
Aber das ist ja alles hinreichend dokumentiert. Steht z.B. im Wiki zur Fritzbox.


> - Warum verwendest du "dsld -n"

Weil es mein Vorgänger so gemacht hat...
Ich vermute, das verringert die Anzahl der Logmeldungen. (Laut "dsld --help" sind es Meldungen über verworfene Pakete - Firewall)


Gruß,
Ulrich
 
Zuletzt bearbeitet:
Hi Ulrich,

habe das Script jetzt ausprobiert, und es funktioniert tatsächlich auch auf meiner FritzBox 7170 einwandfrei.
Ich habe es für mich noch ein wenig umgeschrieben, so dass ich je einen Button zum Aufbauen und Trennen der Verbindung habe. Falls jemand daran interessiert ist, kann ich das gerne auch noch hier posten, nur weiß ich nicht, wie ich das Script wieder aus der Box herauskriege (will mir jetzt nicht extra so einen tftp-Client installieren...)
 
Noch eine Frage

Eine Frage hätte ich aber doch noch:

Kann man in Telnet irgendwie feststellen, ob der dsld-Dienst gerade läuft oder nicht?

Gruß, Chris
 
Code:
/var/mod/root # ps|grep dsld
 4241 root       1532 S   dsld
11913 root        308 S   grep dsld
Der erste Prozess ist der gesuchte.

MfG Oliver
 
Code:
/var/mod/root # ps|grep dsld

Das Verzeichnis /var/mod gibt es bei mir leider nicht :noidea:

Allerdings scheint das Ganze auch in einem anderen Pfad zu funktionieren...

Kannst du vielleicht noch kurz erklären, was der angegebene Befehl bewirkt, damit ich das vielleicht etwas besser verstehe? Ist es vielleicht auch möglich, den zweiten Prozess nicht mit anzuzeigen, da ich das für ein Programm verwenden möchte?

Gruß, Chris
 
Feststellen, ob dsld läuft

Hi,


"ps" gibt den Status der auf dem System laufenden Prozesse (Alle Programme, auch die im Hintergrund laufenden) aus. Z.B. die eindeutige Prozessnummer, die "PID". Dabei lassen sich verschiedene Filter definieren, und die Ausgabe sich beschränken. "grep" filtert dabei wiederum nur den Prozess "dsld" heraus.

Das funkitoniert unabhängig vom Pfad, in dem Du Dich befindest.


Um in einem Script festzustellen, ob ein Prozess läuft, kannst Du stattdessen auf der Fritzbox einfach die PID abfragen; falls der Prozess nicht läuft, wird nur eine Leerzeile ausgegeben, ansonsten die PID. Abfrage mit: "pidof dsld".

Alternativ kannst Du im Verzeichnis /var/run die Existenz der Datei "dsld.pid" prüfen, die dann ebenfalls die PID enthält, wenn der DSL-Dämon läuft.

Gruß, Ulrich
 
Hi Ulrich,

danke für diese sehr verständliche Erklärung!

Alternativ kannst Du im Verzeichnis /var/run die Existenz der Datei "dsld.pid" prüfen, die dann ebenfalls die PID enthält, wenn der DSL-Dämon läuft.
Das klingt für mich eigentlich am besten. Gibt es denn einen Befehl, mit dem man die Existenz der Datei prüfen kann (so wie "if exist" in einem DOS-Batchfile)?

Diesen könnte ich dann in der debug.cfg verwenden, um auf der Html-Seite zum Systemstatus anzuzeigen, ob eine DSL-Verbindung besteht oder nicht. Entsprechend könnte dann je nach Fall ein Verbinden- bzw. Trennen-Button angezeigt werden...

Gruß, Chris
 
Leider funktioniert das Skript nicht mit der W900v nach Fritzisierung.

Da müssen wir noch mal schauen.

mfG,
Stefan
 
Kostenlos!

Statistik des Forums

Themen
248,847
Beiträge
2,302,769
Mitglieder
378,497
Neuestes Mitglied
guenther1987