Forum eedomus
https://forum.eedomus.com/

Requête HTTP shutdown Synology
https://forum.eedomus.com/viewtopic.php?f=15&t=1045
« Précédent  Page 8 sur 8
Auteur:  darkwinter [ 12 Août 2016 13:47 ]
Sujet du message:  Re: Requête HTTP shutdown Synology

Solution pour repasser en Root sur DSM6 :

https://www.synology.com/en-us/knowledg ... SSH_Telnet

Il faudra donc rajouter dans le code php le sudo -i
Auteur:  frenchdm [ 12 Août 2016 17:33 ]
Sujet du message:  Re: Requête HTTP shutdown Synology

Etant un "nul" en php. Comment fait-on ?
Auteur:  enr37 [ 13 Août 2016 22:59 ]
Sujet du message:  Re: Requête HTTP shutdown Synology

Je suis aussi preneur. Ca me ferait qq économies d automatiser cela... :P

Envoyé de mon GT-N5110 en utilisant Tapatalk
Auteur:  frenchdm [ 03 Oct 2016 06:48 ]
Sujet du message:  Re: Requête HTTP shutdown Synology

Personne n'a une solution ?...
Auteur:  stefanski [ 30 Déc 2016 18:20 ]
Sujet du message:  Re: Requête HTTP shutdown Synology

Voici une adaptation de ce que j'ai trouvé sur le forum pour que ça fonctionne. Il faut :
- Installer Web Station sur le Synology
- Installer PHP 5.6 sur le Synology
- Activer l'extension ssh2 dans Web Station/PHP

Créer un fichier synology-shutdown.php dans un répertoire "script" dans le répertoire "web" créé par le Synology avec le contenu ci-dessous :
Code : Tout sélectionner
<?php
$connection = ssh2_connect('127.0.0.1',22);

$login = $_GET["login"];
$password = $_GET["password"];

if ( (strlen($login) == 0) || (strlen($password) == 0) ){
   die('Please&nbsp;specify&nbsp;login&nbsp;and&nbsp;password!');
}

if (!ssh2_auth_password($connection, $login, $password)) {
   die('Unable to authenticate');
}
else {
   $str = 'echo ' . $password . '|sudo -S poweroff';
   // str_replace is used to escape " characters in the password
   $str = str_replace("\"", "\\\"", $str);
   $stream = ssh2_exec($connection, $str);
    $errorstream = ssh2_fetch_stream($stream, SSH2_STREAM_STDERR);
   // enable blocking for both streams
    stream_set_blocking($errorstream, true);
    stream_set_blocking($stream, true);
   echo stream_get_contents($stream);
   echo "<br>";
   echo stream_get_contents($errorstream);
   echo "<br>";
    echo "shutting&nbsp;down...";
}

?>


Créer un actionneur qui appelle de la sorte :
http://[VAR1]/script/synology-shutdown.php?login=[VAR2]&password=[VAR3]

Et configurer les variables suivantes dans l'actionneur :
- VAR1 : IP du Synology (et éventuellement port si différent de 80)
- VAR2 : login d'un utilisateur admin sur le Synology
- VAR3 : mot de passe de l'utilisateur
Auteur:  alexbi [ 19 Oct 2017 13:20 ]
Sujet du message:  Re: Requête HTTP shutdown Synology

bonjour chez moi cela ne fonctionne pas

j'ai mis une clés ssh pour avoir accé a winSCP, ça pourrait venir de ça ?
Auteur:  ArmoiraglatZ [ 28 Nov 2017 10:37 ]
Sujet du message:  Re: requête http shutdown synology

aurel a écrit:arf après test il semble que ca ne fonctionne pas via exec( "shutdown -h now")

l'appel de la page ne coupe pas le nas.

une autre piste svp?


Hello !
Pour avoir déjà rencontré le soucis, il faut savoir que ton script PHP est géré par le serveur web de ta machine (en l'occurence ton Syno).
Concrètement cela signifie que c'est l'utilisateur de ton serveur Web qui va exécuter le script et donc la commande "shutdown -h now". Le problème c'est que la commande "shutdown" necessite des droits root pour fonctionner. Donc si l'utilisateur du serveur n'est pas root, ta commande ne fonctionnera jamais.

N'ayant pas de Syno, je ne peux pas te donner d'exemple concret, mais voici un parallèle sur mon Centos ou j'utilise cette méthode :

J'ai un serveur web sous Apache. Lors de l'installation du serveur, un compte "apache" a été créé sur mon OS. Toutes les requêtes Web/Php lorsque je charge une page ou un script dans le répertoire /var/www/html sont lancées avec l'utilisateur Apache. Dans ce répertoire j'ai un script PHP qui fait un shutdown différé de 15 min (mais le principe est le même que dans ton cas). Ce script est donc lancé par l'utilisateur "apache", mais génère une erreur de type "droits insuffisants" car apache n'a pas de droits root. Pour contourner cela et donner des droits root à apache, il faut ajouter le compte "apache" dans le fichier /etc/sudoer via la commande :

visudo


puis rajouter :

apache ALL=(ALL) ALL


Maintenant ton compte apache a des droits root et peut executer le shutdown :)
Page 8 sur 8 Le fuseau horaire est UTC+1 heure