cgi script für ip erneuerung

sir-rion

Neuer User
Mitglied seit
4 Nov 2007
Beiträge
15
Punkte für Reaktionen
0
Punkte
0
da mir die ganzen tools aufn senkel gehen (und auch zu lange zum ip adresse erneuern brauchen) und mir ein reboot zu lange dauert um ne neue ip adresse zu kriegen hab ich mich schonmal drangesetzt gehabt und damals mit telnet scripts gebastelt...

allerdings fände ich es wesentlich unproblematischer einfach nen link á lá fritz.box/cgi-bin/reconnect oder ähnliches aufzurufen... das müsste ja auch alles gehen... die beiden linux befehle wären

killall -9 dsld

und mit

dsld

einfach wieder anschalten nach ner kurzen pause oder auch per zweitem linkaufruf... wär ja auch über metatags realisierbar dass der da atomatisch auf ne zweite seite leitet

da ich in der cgi folder ja nicht schreiben kann halt eben per workaround über die debug...

und da hab ich jetzt keine ahnung

1. kann ich dadurch fest ne datei in die cgi folder schreiben?
oder muss ich jedesmal ne datei in die /var/tmp/ schieben und die mit nem mount befehl ins /usr/www/html/cgi-bin/ linken?

und reicht das wenn ich mir einfach ein mehr oder weniger leeres pseudo image bei the consturct bastel wo ich am ende der debug einfach

###
touch /var/tmp/reboot
begin /var/tmp/reboot
#! /bin/sh
killall -9 dsld
sleep 3
dsld
EOF

mount -o bind /var/tmp/reboot /usr/www/html/cgi-bin/reboot
###

oder ist der ansatz grundsätzlich falsch?


ich habs nie so ganz gerafft wann die debug.cfg wie ausgelesen wird

edit
ok nummer 1 ich brauch wohl für das bind ne datei die schon existiert d.h. ich kann wieder nichts einspielen ohen was anderes kaputtzumachen


und das geht nich ganz so einfach nen shell ebfehl im cgi script zu starten... ich weiß dass es ging nur nichtmehr wie
 
Zuletzt bearbeitet:
so nach einigem testen und allem hab ichs hingekriegt
debug.cfg sieht jetzt so aus

#! /bin/sh
touch /var/tmp/reboot
echo '#! /bin/sh' >> /var/tmp/reboot
echo '/sbin/dsld -s' >> /var/tmp/reboot
echo '/sbin/dsld -n' >> /var/tmp/reboot
chmod +x /var/tmp/reboot
mount -o bind /var/tmp/reboot /usr/www/html/cgi-bin/system_status

ein einfaches aufrufen von fritz.box/cgi-bin/system_status erneuert die ip...
damit lassen sich ja problemlos shortcuts etc einrichten
und da die system_status anundfürsich nicht gebraucht wird leidet auch keine funktionalität



also wers gebrauchen kann bedient euch
 
Hallo sir-rion,

zunächst mal Danke für diesen Lösungsvorschlag! :D

Erlaube mir trotzdem folgenden Verbesserungsvorschlag:
Code:
#! /bin/sh
touch /var/tmp/[COLOR="Red"]my[/COLOR]reboot
echo '#! /bin/sh' [COLOR="red"]>[/COLOR] /var/tmp/[COLOR="Red"]my[/COLOR]reboot
echo '/sbin/dsld -s' >> /var/tmp/[COLOR="Red"]my[/COLOR]reboot
echo '/sbin/dsld -n' >> /var/tmp/[COLOR="Red"]my[/COLOR]reboot
chmod +x /var/tmp/[COLOR="Red"]my[/COLOR]reboot
mount -o bind /var/tmp/[COLOR="Red"]my[/COLOR]reboot /usr/www/html/cgi-bin/system_status
Begründung:
Der Befehl reboot existiert schon als Systembefehl, deshalb sollte man sicherheitshalber einen eigenen Befehlsnamen wählen (myreboot). :confused:
Der erste echo-Befehl sollte immer nur ein Größer-Zeichen ">" enthalten, damit das Ergebnis frisch angelegt und nicht immer wieder ergänzt wird. ;)

Joe
 
ja sinnvoll sinnvoller wäre noch einen dateinamen á lá iprenew oder sowas zu vergeben statt reboot

der name hat ja ansich nichts mit der funktion zu tun weiß nichmehr wie ich auf den namen kam

das mit dem einfachen > macht doch keinen unterschied da die datei auf jeden fall erst an dieser stelle angelegt wird ansonsten stimme ich dir zu

funktioniert übrigens alles großartig

und wenn man noch mag kann man mit echo -e "du hast jetzt eine neue ip" noch irgendwas tolles anzeigen lassen oder mit nem meta tag redirekt gleich auf ne neue seite weiterleiten sobald die seite fertiggeladen ist...
 
Dann auch noch ein Vorschlag von mir.
Code:
#! /bin/sh
cat <<EOF > /var/tmp/reconnect
#!/bin/sh
/sbin/dsld -s
/sbin/dsld -n
EOF
chmod +x /var/tmp/reconnect
mount -o bind /var/tmp/reconnect /usr/www/html/cgi-bin/system_status
Ein touch vor dem Erstellen ist nicht notwendig, da damit auch nur eine Datei angelegt ist, falls sie nicht existiert.
Statt mit etlichen echo-Befehlen eine Datei immer wieder zu verlängern, kann man sie auch am Stück anlegen.
Und reboot oder myreboot beschreibt nicht, was die Datei tut.
 
Hallo sir-rion,
das mit dem einfachen > macht doch keinen unterschied da die datei auf jeden fall erst an dieser stelle angelegt wird
Der touch-Befehl legt eine Datei nur dann neu an, wenn sie noch nicht existiert, macht diese aber nie leer. ;)
Darauffolgende echo-Befehle mit ">>" schreiben bei existierender Datei aber immer neue Zeilen dazu.
Ein einfaches ">" am Anfang erzwingt aber ein Löschen des vorherigen Inhaltes.

Joe
 
Kostenlos!

Statistik des Forums

Themen
248,854
Beiträge
2,302,897
Mitglieder
378,504
Neuestes Mitglied
Hallo61Hallo