Init-Script von anderem PC neustarten?

kami23

Neuer User
Mitglied seit
1 Jan 2007
Beiträge
148
Punkte für Reaktionen
1
Punkte
16
Hi,

ich weiß das es Sicherheitsmässige Gedanken bei dieser Frage gibt, aber diesen Aspekt bitte einfach außer Kraft lassen.

Also hier mein Problem:

Ich habe einen Homeserver mit einem AVM-Telefonscript darauflaufen, das mir kontinuierlich meine AVM Box Telefonliste ausliest.
Wird nun der Router abgeschaltet und wieder angeschaltet, muss das Shell Script neugestartet werden. Dafür habe ich die Möglichkeit, mit dem AVM Router auf den Server zu zugreifen und dort Aktionen auszuführen. Da ich es recht simpel halten möchte, habe ich mir ein PHP-skript geschrieben, das den Init-Prozess, der auch beim Homeserver-Reboot ausgeführt wird, neustartet. Das Skript sieht so aus:

Code:
$iprange= str_split($_SERVER['REMOTE_ADDR'],11);

if ($iprange[0] == "192.168.2.1")

{
system("sudo /etc/init.d/local stop");
sleep(1);
system("sudo /etc/init.d/local start");
sleep (5);}


else{echo "wrong ip";}

Auf dem Router wird immer folgendes Skript ausgeführt:

Code:
#!/bin/sh

count=1

while ! ping -c 1 192.168.2.12 && [ "$count" -lt "3" ]; do

  sleep 5

  let count=count+1

  echo $count;

done;

  ping -c1 192.168.2.12 >/dev/null 2>&1

  currentStatus=$?

  echo $currentStatus

  if [ "$currentStatus" != "1" ]

    then

      cd /var/tmp

      wget http://test:[email protected]/restart.php;

  fi

Problem ist nun, ich erhalte auf dem Router immer das restart.php mit auch den Meldungen drin, dass der Prozess gestoppt und wieder gestartet wurde. Aber nur wenn ich das oben genannte Script selber per Konsole ausführe, dann läuft auch nachher auf dem Homeserver wieder der Prozess. Sonst, wenn es beim Rebooten des Systems automatisch gemacht wird, dann wird der Prozess nur abgeschaltet?

Vielleicht kann mir ja jemand bei meinem Gedankenfehler helfen. Achja es sind nur sehr wenig Befehle in der sh auf dem AVM Router möglich. Also umso simpler umso besser :)

Gruß kami
 
Vielleicht kannst Du zunächst den Ablauf noch etwas deutlich beschreiben. Ist Dein Problem der neustart des Routers oder des Servers? Wie wird auf dem Reuter "immer" das Skript ausgeführt?

Ansonsten:
Warum muß das Skript überhaupt neu gestartet werden? Kann es nicht selbst erkennen, wenn die Verbindung getrennt wurde und sie neu aufbauen?
Wenn nicht das passiert, was Du Dir vorstellst, baue in den Skripten Debug-Ausgaben ein, um zu überprüfen, ob sie so ausgeführt werden, wie DU es Dir vorstellst.
 
Hi,

also der Router hat das Shell-Skript in der debug.cfg hinterlegt.
Der Router führt das Skript richtig aus und der Prozess wird auch richtig beendet.

Falls das Skript per Hand auf dem Router ausgeführt wird, klappt alles und der Prozess wird richtig neugestartet. Wenn der Router aber im Rebootvorgang das Skript ausführt, dann wird der Prozess nur beendet und nicht wieder neugestartet. Verwirrend dabei ist, das in beiden Fällen, ein File mit dem Namen restart.php auf dem Router angelegt wird. Der Inhalt der Datei gibt wieder, das der Prozess auch wieder gestartet wurde.

Vielleicht hat ja jemand einen Tipp wie ich es machen kann?

Gruß kami
 
Wenn die start-Aktion ausgeführt wird, nachher aber der Prozeß dennoch nicht läuft, mußt Du in dieser Richtung weiter schauen.
- Wird das Start-Skript aufgerufen?
- Wird der Prozeß gestartet?
- Wird der Prozeß aus irgendwelchen Gründen wieder beendet?
 
Hallo

also das Start-Skript wird vom Router ausgeführt.
Auf dem Server wird auch local gerestartet.
Ich habe in meiner /etc/conf.d/local.start (Gentoo) 2 Aufrufe drin. Der erst ist ein C-Programm das wird immer neugestartet. Der zweite ist das besagte Perl-Skript. Das wird nicht ausgeführt. Ich habe nun inzwischen auch noch einen Output mit eingefügt aber der wird gar nicht ausgeführt.

Ich verstehe nicht woran das liegt? Also das Perl-Skript ist für jeden Benutzer auszuführen. Was mache ich falsch? Es muss was ganz simples sein. Ich verstehe nicht warum er das nicht ausführen kann? wenn ich auf dem System so eingeloggt bin und das Init-file neustarte klappt alles.

Gruß kami
 
Ich weiß nicht, was in Deiner Datei /etc/conf.d/local.start steht, und Du schreibst nichts davon.
Der Aufruf eines ersten nicht näher bezeichneten Programms funktioniert noch, der Aufruf eines zweiten nicht näher bezeichneten Programms funktioniert nicht mehr.
Woran kann das liegen? Vielleicht am Wetter? ;-) Bei den Angaben von Dir ist eine Vermutung so gut wie die andere.
 
hi

klar hier gerne mehr Infos.

Also die local.start sieht so aus:

su -c "script-loader --daemon" kami &>/dev/null
su -c "avmget.pl &" kami &>/dev/null

Das erste Programm wird immer schön neugestartet das zweite nicht.

Tausche ich die beiden Befehle. Startet er auch wieder nur script-loader aber nicht avmget.pl

Gruß kami
 
Wie wäre es denn, wenn Du die Ausgabe davon nicht nach /dev/null schickst, sondern in eine Datei? Vielleicht kommt ja eine informative Meldung.
 
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.