Bei mir läuft eine Synology Diskstation DS1513+ und hält vorwiegend Filme/Fotos/Musik im Netzwerk bereit. Um die Platten zu schonen, habe ich nach einer Möglichkeit gesucht das NAS aus der Ferne herunterfahren zu können, falls es nicht benötigt wird (z.B. keiner Zuhause, Nachts). Über den MS selbst funktioniert ja weder Telnet noch SSH, somit schieden diese Wege aus.
Nun hatte ich die Idee den auf dem NAS laufenden Webserver zum herunterfahren zu nutzen. Dazu habe ich ein kleines PHP Script zusammengebaut, möglicherweise hilft es ja jemandem.
Dazu nutze ich die kaum dokumentierte WebAPI von Synology.
Bitte IP_DISKSTATION, USER_DISKSTATION und PASS_DISKSTATION entsprechend ersetzen.
$ch = curl_init();
curl_setopt($ch, CURLOPT_COOKIEJAR, "/tmp/cookieFileName");
curl_setopt($ch, CURLOPT_URL,"http://IP_DISKSTATION:5000/webapi/auth.cgi");
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, "api=SYNO.API.Auth&version=3&method=login&account=USER_DISKSTATION&passwd=PASS_DISKSTATION&format=sid");
ob_start();
curl_exec ($ch);
ob_end_clean();
curl_close ($ch);
unset($ch);
$ch = curl_init();
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch, CURLOPT_COOKIEFILE, "/tmp/cookieFileName");
curl_setopt($ch, CURLOPT_URL,"http://IP_DISKSTATION:5000/webapi/entry.cgi?api=SYNO.Core.System&method=shutdown&account=USER_DISKSTATION&passwd=PASS_DISKSTATION&version=1&force=false");
$buf2 = curl_exec ($ch);
curl_close ($ch);
echo "<PRE>".htmlentities($buf2);
?>
Um die Diskstation über die Visu hernuterfahren zu können, habe ich einen virtuellen Ausgang mit der IP der Diskstation angelegt.
An diesem hängt einen virtueller Ausgangs Befehl mit dem Pfad und Namen des Skripts.
In der Config habe ich dann einen Taster verwendet um das Skript auszuführen. Zusätzlich lass ich mir über Ping noch anzeigen, ob die Diskstation läuft. Ein weiterer Taster weckt die Station über WOL auf und über eine Schaltuhr kann ich die Diskstation Zeitgesteuert herunterfahren.
Schönen Gruß
type0n
Kommentar