# Script Wake on LAN Gladys 4 ?

**URL:** <https://community.gladysassistant.com/t/script-wake-on-lan-gladys-4/6384>\
**Category:** Configuration\
**Created:** [Juin 12, 2021, 3:35 UTC](https://community.gladysassistant.com/t/script-wake-on-lan-gladys-4/6384 "2021-06-12T15:35:00Z")\
**Posts on this page:** 17\
**Page:** 1

<div class="post-metadata">

**Author:** ![djokoss22](https://gladys-assistant-community.b-cdn.net/letter_avatar_proxy/v4/letter/d/43a26b/32.png) [@djokoss22](https://community.gladysassistant.com/u/djokoss22)\
**Post date:** [Juin 12, 2021, 3:35 UTC](https://community.gladysassistant.com/t/script-wake-on-lan-gladys-4/6384/1 "2021-06-12T15:35:00Z")

</div>

Bonjour,

Dans Gladys 3, nous pouvions créer des scripts java, ce qui était très pratique car je pouvais démarrer et éteindre mon PC.  
J’avais créé 2 devices. 1 exécutant mon script bash de boot et 1 exécutant mon script bash de shutdown se trouvant sur mon Raspberry. (ex: Device1 avec identifier «&nbsp;sh /home/pi/script/shutdown.sh&nbsp;» et device2 avec identifier «&nbsp;sh /home/pi/script/boot.sh&nbsp;»)  
J’avais également créé un script qui s’éxecutait à mon dépard et retour à la maison:

> let PcOnDevice = {  
> devicetype: 4,  
> value: 1
> 
> };
> 
> let PcOffDevice = {  
> devicetype: 3,  
> value: 1
> 
> };
> 
> gladys.deviceType.exec(PcOffDevice) ;
> 
> setTimeout(function(){  
> gladys.deviceType.exec(PcOnDevice);  
> },2000) ;

Y a t-il possibilité de faire la même chose sous Gladys 4 ? Si oui, comment? Si non, est-il prévu de pouvoir exécuter du script ou une intégration WOL est-elle prévue?  
J’ai vu sur d’autres posts qu’il y a déjà eu quelques discutions sur le fait de pouvoir exécuter du script mais pas de réponse réelle.

En vous remerciant d’avance pour vos réponses.

---

<div class="post-metadata">

**Author:** ![lmilcent](https://gladys-assistant-community.b-cdn.net/user_avatar/community.gladysassistant.com/lmilcent/32/7023_2.png) [@lmilcent](https://community.gladysassistant.com/u/lmilcent)\
**Post date:** [Juin 12, 2021, 4:34 UTC](https://community.gladysassistant.com/t/script-wake-on-lan-gladys-4/6384/2 "2021-06-12T16:34:31Z")

</div>

En l’état il n’est pas possible d’exécuter des scripts… Mais tu peux créer un mini serveur Web qui déclenche ton script.  
Il te suffit alors de faire un appel HTTP et le tour est joué !

Regarde ici, ça peut être intéressant pour toi [Introducing Sampo: A Bash API Server For Running Shell Scripts](https://jacobsalmela.com/2020/09/15/introducing-sampo-a-bash-api-server-that-runs-your-shell-scripts/)

---

<div class="post-metadata">

**Author:** ![djokoss22](https://gladys-assistant-community.b-cdn.net/letter_avatar_proxy/v4/letter/d/43a26b/32.png) [@djokoss22](https://community.gladysassistant.com/u/djokoss22)\
**Post date:** [Juin 12, 2021, 7:09 UTC](https://community.gladysassistant.com/t/script-wake-on-lan-gladys-4/6384/3 "2021-06-12T19:09:10Z")

</div>

Ha, merci pour cette solution. Je vais regarder à cela.  
Merci d’avoir mis un lien car je n’y connais rien du tout donc ça va m’aider à fond !

---

<div class="post-metadata">

**Author:** ![Jean34](https://gladys-assistant-community.b-cdn.net/user_avatar/community.gladysassistant.com/jean34/32/3349_2.png) [@Jean34](https://community.gladysassistant.com/u/Jean34)\
**Post date:** [Juin 13, 2021, 11:21 UTC](https://community.gladysassistant.com/t/script-wake-on-lan-gladys-4/6384/4 "2021-06-13T11:21:36Z")

</div>

Salut, n’hésite pas à faire un petit tuto si tu arrive à faire ce que tu veux, ça pourra servir à d’autres 😉

---

<div class="post-metadata">

**Author:** ![djokoss22](https://gladys-assistant-community.b-cdn.net/letter_avatar_proxy/v4/letter/d/43a26b/32.png) [@djokoss22](https://community.gladysassistant.com/u/djokoss22)\
**Post date:** [Juin 13, 2021, 4:40 UTC](https://community.gladysassistant.com/t/script-wake-on-lan-gladys-4/6384/5 "2021-06-13T16:40:32Z")

</div>

Biensûr.  
Mais ça se presente mal car là, je ne comprends rien à SAMPO donc va falloir que je trouve autre chose que je comprend un peu mieux mais dur dur quand on y connait rien…

---

<div class="post-metadata">

**Author:** ![lmilcent](https://gladys-assistant-community.b-cdn.net/user_avatar/community.gladysassistant.com/lmilcent/32/7023_2.png) [@lmilcent](https://community.gladysassistant.com/u/lmilcent)\
**Post date:** [Juin 13, 2021, 4:54 UTC](https://community.gladysassistant.com/t/script-wake-on-lan-gladys-4/6384/6 "2021-06-13T16:54:30Z")

</div>

Je ne connais pas particulièrement ce projet, il existe sûrement un autre qui sera plus adapté et facile à utiliser.

L’idée est d’avoir un serveur Web API qui te permettra d’exécuter un script sur simple appel. Par exemple [http://monip/monscript1](http://monip/monscript1) déclenche un script bash particulier.

---

<div class="post-metadata">

**Author:** ![djokoss22](https://gladys-assistant-community.b-cdn.net/letter_avatar_proxy/v4/letter/d/43a26b/32.png) [@djokoss22](https://community.gladysassistant.com/u/djokoss22)\
**Post date:** [Juin 14, 2021, 1:18 UTC](https://community.gladysassistant.com/t/script-wake-on-lan-gladys-4/6384/7 "2021-06-14T01:18:00Z")

</div>

Bon, il est 3h du mat’ mais j’ai enfin une solution.  
Si vous avez une solution plus facile, je suis preneur !  
(Gladys tourne sur un raspberry pi)

SUR LE RASPBERRY PI:  
#################

1. On met à jour le raspberry:

> sudo apt-get update  
> sudo apt-get upgrade

1. On installe apache et on modifie le port afin qu’il n’utilise pas le même que gladys:

> sudo apt-get install apache2 -y  
> sudo nano /etc/apache2/ports.conf  
> → modifier la ligne «&nbsp;Listen 80&nbsp;» en «&nbsp;Listen 90&nbsp;» (j’ai mis 90 comme port mais vous pouvez mettre le port qu’il vous convient)

1. On installe PHP:

> sudo apt-get install php -y

1. On active le service apache au démarrage de l’os et on démarre le service apache:

> sudo systemctl enable apache2.service  
> sudo systemctl start apache2.service

1. On installe les services pour éteindre et démarrer le PC distant:

> sudo apt-get install samba-common -y  
> sudo apt-get install samba-common-bin  
> sudo apt-get install etherwake -y

1. On créer le fichier script PHP pour le démarrage du PC distant via Wake-On-Lan:

> sudo nano /var/www/html/boot.php

1. On ajoute le code suivant dans celui-ci:

> \<?php exec("etherwake -D MACADRESSEDUPC"); ?\>
> 
> (remplacez MACADRESSEDUPC par l’adresse MAC du PC distant)

1. Puis on lui ajoute des permissions:

> sudo chmod 700 /var/www/html/boot.php  
> sudo chown www-data:www-data /var/www/html/boot.php

SUR LE PC WINDOWS DISTANT:  
###########################

Lancez regedit et allez à cette emplacement:  
HKEY\_LOCAL\_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System  
Ajouter une nouvelle clé DWORD32 nommée «&nbsp;LocalAccountTokenFilterPolicy&nbsp;» et mettez la valeur à «&nbsp;1&nbsp;» si celle-ci n’existe pas.

Lancez Services.msc, mettre le service «&nbsp;Registre à Distance&nbsp;» en «&nbsp;Automatique&nbsp;» et démarrez le.

Dans le pare-feu Windows, autorisez «&nbsp;Infrastructure de gestion Windows (WMI)&nbsp;» (perso, je n’ai pas eu à le faire)

DANS GLADYS4:  
#############

Créez une nouvelle Scène.  
Comme déclencheur, choisissez celui qui vous convient. (pour ma part, j’ai choisi «&nbsp;retour à la maison&nbsp;», comme cela mon pc s’alume lorsque je rentre chez moi.)  
Comme action, Choisir «&nbsp;Faire une requête HTTP&nbsp;», méthode = «&nbsp;POST&nbsp;» et URL = «&nbsp;http:// **IPDURASPBERRY** :90/boot.php&nbsp;». Laissez le reste vide et enregistrez la scène.  
(remplacez IPDURASPBERRY par l’adresse ip du raspberry pi)

Vous pouvez tester le fonctionnement et appuyant sur le boutton «&nbsp;Démarrer&nbsp;» sur la scène que vous venez de créer.  
Pour annuler un shutdown sous windows, ouvrez un CMD et tapez «&nbsp;shutdown -a&nbsp;»

.  
.  
.  
.  
.  
Pour le shutdown du PC distant, on répète les points 6 à 8 de la facon suivante:  
6) On créer le fichier script PHP pour le shutdown du PC distant:

> sudo nano /var/www/html/shutdown.php

1. On ajoute le code suivant dans celui-ci:

> \<?php exec("net rpc shutdown -f -I IPDUPCDISTANT -U UTILISATEUR%MOTDEPASSE"); ?\>
> 
> (remplacez IPDUPCDISTANT par l’adresse IP du PC distant , UTILISATEUR par votre nom d’utilisateur du PC distant et MOTDEPASSE par le mot de passe de l’utilisateur du pc distant)

1. Puis on lui ajoute des permissions:

> sudo chmod 700 /var/www/html/shutdown.php  
> sudo chown www-data:www-data /var/www/html/shutdown.php

Biensur, il vous reste a faire une scène dans Gladys comme pour le boot mais en choisissant «&nbsp;départ de la maison&nbsp;» comme déclencheur par exemple et comme action, Choisir «&nbsp;Faire une requête HTTP&nbsp;», méthode = «&nbsp;POST&nbsp;» et URL = «&nbsp;http:// **IPDURASPBERRY** :90/shutdown.php&nbsp;». Laissez le reste vide et enregistrez la scène.

---

<div class="post-metadata">

**Author:** ![pierre-gilles](https://gladys-assistant-community.b-cdn.net/user_avatar/community.gladysassistant.com/pierre-gilles/32/5886_2.png) [@pierre-gilles](https://community.gladysassistant.com/u/pierre-gilles)\
**Post date:** [Juin 14, 2021, 4:27 UTC](https://community.gladysassistant.com/t/script-wake-on-lan-gladys-4/6384/8 "2021-06-14T04:27:48Z")

</div>

Top si tu as trouvé une solution!

Sinon, une autre solution, c’était de passer par l’intégration MQTT et de te faire un petit script (en n’importe quel langage: Node.js, Python, peut importe) qui écoute sur un topic MQTT et qui réagit à la réception d’un message MQTT sur ce topic.

L’API MQTT de Gladys est décrite sur cette doc:

> **[MQTT API | Gladys Assistant](https://gladysassistant.com/fr/docs/api/mqtt-api/)**
>
> Si vous avez configurer un broker MQTT avec Gladys, vous pouvez communiquer avec Gladys via MQTT.

J’ai aussi fait une vidéo sur le sujet:

[![](https://gladys-assistant-community.b-cdn.net/uploads/default/original/2X/8/818befc53cd7b34a023535c27a8132184c90b298.jpeg "Utiliser l'API MQTT de Gladys Assistant 4 en Node.js (Live coding)") ](https://www.youtube.com/watch?v=o5yn_FnYtkc)

Mais ta solution marche très bien!! 😃

---

<div class="post-metadata">

**Author:** ![Totof](https://gladys-assistant-community.b-cdn.net/user_avatar/community.gladysassistant.com/totof/32/3640_2.png) [@Totof](https://community.gladysassistant.com/u/Totof)\
**Post date:** [Juin 14, 2021, 5:20 UTC](https://community.gladysassistant.com/t/script-wake-on-lan-gladys-4/6384/9 "2021-06-14T05:20:43Z")

</div>

Attention a deux choses niveau secu

> [@djokoss22](#):
>
> chmod 755 /var/www/html/shutdown.php

Tu autorise other sur le fichier, un chown www-data et un 700 sur le fichier devrair suffir 🙂

Le php exec est aussi pas mal dangereux surtout si ton gladys est accessible dans ton lan 😛

Tu peux limite ajouter dans le vhost un Require ip 127.0.0.1 pour n’autoriser que gladys

---

<div class="post-metadata">

**Author:** ![VonOx](https://gladys-assistant-community.b-cdn.net/user_avatar/community.gladysassistant.com/vonox/32/10128_2.png) [@VonOx](https://community.gladysassistant.com/u/VonOx)\
**Post date:** [Juin 14, 2021, 7:40 UTC](https://community.gladysassistant.com/t/script-wake-on-lan-gladys-4/6384/10 "2021-06-14T07:40:40Z")

</div>

Je plussoie @Totof pour l’aspect secu

---

<div class="post-metadata">

**Author:** ![djokoss22](https://gladys-assistant-community.b-cdn.net/letter_avatar_proxy/v4/letter/d/43a26b/32.png) [@djokoss22](https://community.gladysassistant.com/u/djokoss22)\
**Post date:** [Juin 14, 2021, 1:32 UTC](https://community.gladysassistant.com/t/script-wake-on-lan-gladys-4/6384/11 "2021-06-14T13:32:14Z")

</div>

Merci les gens pour l’aide !

J’ai modifié le chmod en 701 et 700 dans le petit tuto ci-dessus et sur mon raspberry. 701 pour boot.php sinon, ça ne fonctionne pas.

> [@Totof](#):
>
> Tu peux limite ajouter dans le vhost un Require ip 127.0.0.1 pour n’autoriser que gladys

-\>Je vais **essayer** de faire ça cette semaine si j’ai le temps.

Faudrait également que je regarde à l’intégration MQTT mais ça me fesait un peu peur. Avec le tuto, ça me rassurera peut-être et qui sait, je me lancerai peut-être là dedans quand j’aurai 2-3 jours de congé.

Je reviens vers vous si j’arrives à faire ce machin VHOST.

---

<div class="post-metadata">

**Author:** ![JeuFore](https://gladys-assistant-community.b-cdn.net/user_avatar/community.gladysassistant.com/jeufore/32/7544_2.png) [@JeuFore](https://community.gladysassistant.com/u/JeuFore)\
**Post date:** [Juin 14, 2021, 5:50 UTC](https://community.gladysassistant.com/t/script-wake-on-lan-gladys-4/6384/12 "2021-06-14T17:50:28Z")

</div>

Hello,

Alors je peux te proposer une solution faite en nodejs que j’utilise. C’est une api que j’ai dev rapidement pour compléter mes besoins en plus de gladys.

Si tu veux, j’ai mis un repo en public : [GitHub - JeuFore/control-node](https://github.com/JeuFore/control-node)  
Un Docker Hub aussi : [Docker Hub](https://hub.docker.com/r/jeufore/control-node)

Bref, il y a beaucoup de choses pas forcément utile pour toi, mais tu peux regarder le repo, ou alors run dans un container.

Entre autres il y a :

- Une api
- Support Alexa
- Support mqtt
- Support de divers périphériques

Pour juste l’utilisation de **wol** , tu dois créer un fichier **device.js**

```auto
const WolDevice = require('../utils/WolDevice');

module.exports = [
    {
        deviceName: 'Pc', // pour l'exemple
        deviceMQTTName: 'pc', // pour l'exemple
        deviceRoom: 'server', // pour l'exemple
        deviceParam: { mac: '00:00:00:00:00:00' },
        deviceInstance: WolDevice,
        features: [
            'state'
        ],
        children: []
    }
]

```

Ensuite créer un device mqtt dans **gladys**

 ![Capture d’écran 2021-06-14 à 19.39.53](https://gladys-assistant-community.b-cdn.net/uploads/default/original/2X/0/0558ce5d59841b2c93f89592edded765bb5fc7e8.png)  
Puis ajouter une fonctionnalité  
 ![Capture d’écran 2021-06-14 à 19.41.11](https://gladys-assistant-community.b-cdn.net/uploads/default/original/2X/7/7ea103fc59d5885b0313a720f06ac5bc72143caa.png)

Pour enfin faire un docker run :

```bash
docker run -d \
--network=host \
--name control-node \
-e MQTT_HOST=HOST \
-e MQTT_USER=USER \
-e MQTT_PASSWORD=PASSWORD \
-v ./device.js:/usr/src/app/const/device.js \
jeufore/control-node

```

En espérant que cela puisse aider des personnes 🙂

---

<div class="post-metadata">

**Author:** ![Totof](https://gladys-assistant-community.b-cdn.net/user_avatar/community.gladysassistant.com/totof/32/3640_2.png) [@Totof](https://community.gladysassistant.com/u/Totof)\
**Post date:** [Juin 14, 2021, 8:23 UTC](https://community.gladysassistant.com/t/script-wake-on-lan-gladys-4/6384/13 "2021-06-14T20:23:56Z")

</div>

> [@djokoss22](#):
>
> 701 pour boot.php sinon, ça ne fonctionne pas.

```auto
701 = -rwx-----x

```

Donc execution pour tout le monde

Tu as fais la commande ci-dessous ?

```auto
chown www-data:www-data boot.php 

```

Pour le require ip dans le vhost, tu devrais avoir dans ce répertoire la : /etc/apache2/sites-enabled/ un fichier type default et tu as les syntaxe en dessous 🙂

[https://httpd.apache.org/docs/2.4/howto/access.html](https://httpd.apache.org/docs/2.4/howto/access.html)

---

<div class="post-metadata">

**Author:** ![djokoss22](https://gladys-assistant-community.b-cdn.net/letter_avatar_proxy/v4/letter/d/43a26b/32.png) [@djokoss22](https://community.gladysassistant.com/u/djokoss22)\
**Post date:** [Juin 14, 2021, 8:38 UTC](https://community.gladysassistant.com/t/script-wake-on-lan-gladys-4/6384/14 "2021-06-14T20:38:56Z")

</div>

> [@Totof](#):
>
> Tu as fais la commande ci-dessous ?
> 
> ```auto
> chown www-data:www-data boot.php 
> 
> ```

Eh, non, pas du tout. Ca fait quoi exactement? (j’y connais rien, je me répète)

> [@Totof](#):
>
> Pour le require ip dans le vhost, tu devrais avoir dans ce répertoire la : /etc/apache2/sites-enabled/ un fichier type default et tu as les syntaxe en dessous 🙂
> 
> [Access Control - Apache HTTP Server Version 2.4](https://httpd.apache.org/docs/2.4/howto/access.html)

Tu viens de me faire gagner 2 jours de recherche 🥰

---

<div class="post-metadata">

**Author:** ![Totof](https://gladys-assistant-community.b-cdn.net/user_avatar/community.gladysassistant.com/totof/32/3640_2.png) [@Totof](https://community.gladysassistant.com/u/Totof)\
**Post date:** [Juin 15, 2021, 8:10 UTC](https://community.gladysassistant.com/t/script-wake-on-lan-gladys-4/6384/15 "2021-06-15T08:10:33Z")

</div>

www-data c’est l’utilisateur qui fait tourner un site. La commande chown permet de passer le fichier en propriétaire:groupe www-data

Par exemple ce fichier html

```auto
-rw-r--r-- 1 root root 10701 Nov 21 2020 index.html

```

il est en root:root avec des droit 644, donc le other peut le lire et le serveur web pourra être afficher

Si je le passe en 640, le fichier ne pourra pas être afficher

```auto
-rw-r----- 1 root root 10701 Nov 21 2020 index.html

```

en faisant un chown

```auto
chown www-data:www-data index.html

```

Voici le résultat

```auto
-rw-r----- 1 www-data www-data 10701 Nov 21 2020 index.html

```

Dans ce cas il sera affiché 🙂

Je pourrais te filer un coup de main pour le require ip si jamais ça ne passe pas ^^

---

<div class="post-metadata">

**Author:** ![djokoss22](https://gladys-assistant-community.b-cdn.net/letter_avatar_proxy/v4/letter/d/43a26b/32.png) [@djokoss22](https://community.gladysassistant.com/u/djokoss22)\
**Post date:** [Juin 15, 2021, 8:34 UTC](https://community.gladysassistant.com/t/script-wake-on-lan-gladys-4/6384/16 "2021-06-15T08:34:40Z")

</div>

Ah ok.  
Merci pour le pti cours, c’est plus clair comme cela !  
Effectivement, niveau sécu c’est bien mieux.

Pour le require ip, ça va aller avec les infos que tu as déjà fourni plus haut.  
Encore merci @Totof

---

<div class="post-metadata">

**Author:** ![djokoss22](https://gladys-assistant-community.b-cdn.net/letter_avatar_proxy/v4/letter/d/43a26b/32.png) [@djokoss22](https://community.gladysassistant.com/u/djokoss22)\
**Post date:** [Janvier 30, 2022, 3:08 UTC](https://community.gladysassistant.com/t/script-wake-on-lan-gladys-4/6384/17 "2022-01-30T15:08:00Z")

</div>

Edit 01/2022:  
Le **script de shutdown** ne fonctionnant plus pour je ne sais pour quelle raison depuis un moment, je me suis penché sur le cas et me suis apperçu que la commande “net” (utile pour le shutdown du PC windows depuis le raspberry) n’était plus reconnue.  
`net: command not found`

J’ai donc dû installer samba-common-bin  
`sudo apt-get install samba-common-bin -y`

Le shutdown du PC Windows refonctionne de nouveau.

J’ai modifié la solution avec cette modification (voir post 7 - [Script Wake on lan Gladys 4? - #7 by djokoss22](https://community.gladysassistant.com/t/script-wake-on-lan-gladys-4/6384/7))
