Requête HTTP shutdown Synology

Capteurs et actionneurs HTTP

Re: Requête HTTP shutdown Synology

Messagepar darkwinter » 12 Août 2016 13:47

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
darkwinter
 
Messages : 246
Inscription : 28 Juil 2012

Re: Requête HTTP shutdown Synology

Messagepar frenchdm » 12 Août 2016 17:33

Etant un "nul" en php. Comment fait-on ?
frenchdm
 
Messages : 180
Inscription : 20 Jan 2014

Re: Requête HTTP shutdown Synology

Messagepar enr37 » 13 Août 2016 22:59

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

Envoyé de mon GT-N5110 en utilisant Tapatalk
eddomus, eedomus+,ipx800, actionnaire de photoshop. twitter ou MP @enr37 pour les demandes d'icônes.
Le savoir ne vaut que s'il est partagé par tous !
enr37
 
Messages : 1209
Inscription : 06 Juin 2013
Localisation : 37

Re: Requête HTTP shutdown Synology

Messagepar frenchdm » 03 Oct 2016 06:48

Personne n'a une solution ?...
frenchdm
 
Messages : 180
Inscription : 20 Jan 2014

Re: Requête HTTP shutdown Synology

Messagepar stefanski » 30 Déc 2016 18:20

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
StefanSki
eedomus+
stefanski
 
Messages : 22
Inscription : 04 Jan 2016

Re: Requête HTTP shutdown Synology

Messagepar alexbi » 19 Oct 2017 13:20

bonjour chez moi cela ne fonctionne pas

j'ai mis une clés ssh pour avoir accé a winSCP, ça pourrait venir de ça ?
alexbi
 
Messages : 2
Inscription : 19 Oct 2017

Re: requête http shutdown synology

Messagepar ArmoiraglatZ » 28 Nov 2017 10:37

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 :)
ArmoiraglatZ
 
Messages : 15
Inscription : 21 Jan 2017

Précédent

Retour vers Requêtes HTTP

Qui est en ligne ?

Utilisateurs parcourant ce forum : Aucun utilisateur inscrit et 1 invité