synology.forum архив спільноти · 2005–2022
ai.synology.forum →
ГлавнаяУправление Системой › Как удаленно выключить 109j

Как удаленно выключить 109j

FormatCevt · 03.03.2010

109j подключен к домашней локалке по статическому айпишнику. Задача - удаленно выключать NAS путем кликания по ярлыку на машине, подключенной к локалке. Никак не могу сообразить, что надо сказать NASу. Что-то типа http://192.168.1.50/бла-бла-бла (192.168.1.50 - IP NAS). Кто-нибудь заморачивался подобной задачей?

Прошивка DSM 2.2-0959.

no_poem · 29.03.2010
109j подключен к домашней локалке по статическому айпишнику. Задача - удаленно выключать NAS путем кликания по ярлыку на машине, подключенной к локалке. Никак не могу сообразить, что надо сказать NASу. Что-то типа http://192.168.1.50/бла-бла-бла (192.168.1.50 - IP NAS). Кто-нибудь заморачивался подобной задачей?

Прошивка DSM 2.2-0959.

 

1) зайти на NAS через веб-интерфейс и нажать "Выключение".

2) через telnet или ssh

3) пункт 2 обернутый в "оболочку", например, автоматизировать набор команд через .bat (но нужна стороняя софтинка для telnet, т.к. консолька отрубится после запуска telnet

Команда на выключение NAS - "poweroff", перезагрузка, соответсвенно "reboot"

4) поднять веб-сервер на DS и положить скриптик (желательно конечно с доступом по паре логин/пароль). Вот код, назовем, к примеру, stop.php

<?php

$result = shell_exec('poweroff');

echo "Status: $result";

?>

Соответственно остановка DiskStation будет производиться командой http://192.168.1.50/stop.php

Nekto73 · 12.04.2010
4) поднять веб-сервер на DS и положить скриптик (желательно конечно с доступом по паре логин/пароль). Вот код, назовем, к примеру, stop.php

Соответственно остановка DiskStation будет производиться командой http://192.168.1.50/stop.php

 

Пункт 4 не проходит:

Warning: shell_exec() [function.shell-exec]: Cannot execute using backquotes in Safe Mode in /volume1/web/stop.php on line 2

Status:

 

И как сделать доступ по логину/паролю?

FormatCevt · 13.04.2010
Пункт 4 не проходит:

Такая же фигня...

Не из-за того ли что нужно предварительно авторизоваться на DiskStation?

Тогда вопрос как программно это можно сделать?

no_poem · 15.04.2010
Пункт 4 не проходит:

 

 

И как сделать доступ по логину/паролю?

 

Не подумал, что он может запросить логин/пароль :)

 

Тогда скриптик посложнее будет немного. Для его работы необходимо включить Telnet или SSH

Листинг stop.php

<?php

//Скрипт выключения Synology DiskStation

$cfgServer = "localhost"; //адрес сервера, если скрипт лежит на Synology, оставляем localhost

$login = "admin"; //логинимся под админом

$pass = "password"; //пароль

$cfgPort = 23; //порт, telnet - 23, SSH - 22

$cfgTimeOut = 10;

 

$usenet = fsockopen($cfgServer, $cfgPort, $errno, $errstr, $cfgTimeOut);

 

if(!$usenet){

echo "Connexion failed<br>";

exit();

}else{

echo "Connected to DiskStation<br>";

stream_set_timeout($usenet, 2);

fputs ($usenet, $login."\r\n");

stream_set_timeout($usenet, 3);

fputs ($usenet, $pass."\r\n");

stream_set_timeout($usenet, 3);

fputs ($usenet, "poweroff\r\n");

stream_set_timeout($usenet, 5);

$j = 0;

while ($j<20){

$res=fgets($usenet, 128);

echo $res;

$j++;

flush();

}

}

fclose($usenet);

echo "End.\r\n";

?>

 

Для перезагрузки меняется

fputs ($usenet, "poweroff\r\n");
на
fputs ($usenet, "reboot\r\n");
no_poem · 15.04.2010
И как сделать доступ по логину/паролю?

Если у тебя DiskStation виден только из локалки, то ничего настраивать в принципе не надо больше.

Но если он у тебя виден всем, а ты хочешь выключать его только из своей локальной сети, то в каталог со скриптом нужно положить файлик с именем ".htaccess" и содержанием

Order Allow, Deny

Deny from All

Allow from 192.168.1.0

Файл говорит встроенному серверу Apache, что в данный каталог могут заходить только с ip-адресов из диапазона 192.168.1.1-255, если у тебя другой локальный диапазон, то измени соответсвенно строку

Allow from 192.168.1.0

Если у тебя DiskStation виден, например, в интернете, то проще вставить авторизацию в сам скрипт. Понадобиться помощь - обращайся - помогу.

FormatCevt · 17.04.2010

В данном скрипте авторизация на серваке проходит нормально (проверял путем подстановки неправильных данных, ругался на не правильные данные), проблема судя по всему в команде "poweroff".

Т.к. пытался через Telnet скомандовать "poweroff"... и тишина... сервак никак не реагирует... В чем может быть засада?

З.Ы. Через SSH тоже не удалось запустить данную команду.... тишина...

no_poem · 20.04.2010
В данном скрипте авторизация на серваке проходит нормально (проверял путем подстановки неправильных данных, ругался на не правильные данные), проблема судя по всему в команде "poweroff".

Т.к. пытался через Telnet скомандовать "poweroff"... и тишина... сервак никак не реагирует... В чем может быть засада?

З.Ы. Через SSH тоже не удалось запустить данную команду.... тишина...

 

А какая версия прошивки? Стоит ли bootstramp? Что говорит при введении команды по telnet или SSH?

Вообще команды из Synology Wiki:

http://forum.synology.com/wiki/index.php/B...he_Synology_box

no_poem · 20.04.2010

Кстати, попробуй изменить логин с admin на root с паролем от пользователя admin.

PKS · 28.10.2010

У меня на 110+ под админом не реагирует, выключается по ssh только под рутом. Без натужного моргания лампочек, немного похрюкает и кирдык.

toleeck · 23.10.2017

а есть живые в этой теме?

 

Тогда скриптик посложнее будет немного. Для его работы необходимо включить Telnet или SSH

Листинг stop.php

 

apache 2.2, php 7.0.21. при переходе на условный stop.php выдаётся ошибка

Connected to DiskStation
SSH-2.0-OpenSSH_6.8p1-hpn14v6 Protocol mismatch. End.

как-то может модернизировать скрипт надо?

polanat · 23.10.2017
а есть живые в этой теме?

Поскольку предпоследняя (Вашу не считаем) запись в этой теме 7-ми летней давности, то Ваш попрос выглядит риторическим. А посему уточните какой их 4-х перечисленных сценариев решения задачи в названии темы Ваш?

 

PS Если речь идёт о виндовом решении с компа, то мне лично нравится 3-й вариант с командой из-под WinSCP ...

toleeck · 23.10.2017
Поскольку предпоследняя (Вашу не считаем) запись в этой теме 7-ми летней давности, то Ваш попрос выглядит риторическим. А посему уточните какой их 4-х перечисленных сценариев решения задачи в названии темы Ваш?

вообще интересует возможность тушить dsm get-запросом. приведённый выше php-скрипт вроде бы как раз то что нужно, но при выполнении выдаёт ошибку.

polanat · 23.10.2017
вообще интересует возможность тушить dsm get-запросом. приведённый выше php-скрипт вроде бы как раз то что нужно, но при выполнении выдаёт ошибку.

При всём уважении - это не самое правильное решение. Поскольку задача php-скрипта все равно передать команду через ssh, то логичнее и органичнее делать это через ssh-клиента на компе. И потом сек'юрнее это делать не по логину и паролю а по ключам ...

 

Но желание аля "нужен точно такой, но с перламутровыми пуговицами!" видимо всё же сильнее ;)