# Init-Script von anderem PC neustarten?

## kami22

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:

```
$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:

```

#!/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:test@192.168.2.12/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  :Smile: 

Gruß kami

----------

## Hollowman

Ersetz mal das alles

```
system("sudo /etc/init.d/local stop");

sleep(1);

system("sudo /etc/init.d/local start");

sleep (5);
```

durch

```
system("sudo /etc/init.d/local restart");
```

Davon abgesehen, das ist alles sehr unschön.

Sebastian

----------

## kami22

Hallo 

also die Änderung habe ich eingebaut. Aber gleiches Problem. Er restartet zwar aber nur den ersten Prozess (Ein C-File) den Rest nicht.

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

----------

## kami22

Keiner einen Vorschlag, woran es liegen kann? local.start hat nur 2 Einträge drin:

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

----------

## Finswimmer

Lass dir doch irgendwohin mal die Ausgabe von den beiden Programmen geben.

Evtl. darfst du sie nicht direkt hintereinander starten, oder so etwas.

----------

