Script .SH ne fonctionne pas (NAS Synology)

Forum dédié aux problématiques concernant les scripts pour DomoticZ.
Entourez votre code et les logs avec les balises nommées code grâce au bouton <\>.
Gaz
Messages : 224
Inscription : 17 oct. 2015, 10:30

Script .SH ne fonctionne pas (NAS Synology)

Message par Gaz »

Bonsoir,
Je comprend pas pour ce la ne fonctionne pas, ni des ames généreuse on la solution...

voici mon script :

Code : Tout sélectionner

#!/bin/sh
result=$(curl -s http://192.168.X.XX:XXXX/json.htm?type=devices&rid=9l jq -r .result[].Havetimeout)
echo $result
if [ $result = "false" ]
then
sudo service domoticz.sz restart
#fi
Et voici la réponse lorsque je le lance :

Code : Tout sélectionner

EDF13.sh: line 6: syntax error: unexpected end of file (expecting "fi")
D'avance merci.
vil1driver
Messages : 5661
Inscription : 30 janv. 2015, 11:07
Localisation : Rennes (35)

Re: Script .SH ne fonctionne pas (NAS Synology)

Message par vil1driver »

Enlèves de # devant fi
MAJ = VIDER LE CACHE(<-Clicable)
/!\Les mises à jour de Domoticz sont souvent sources de difficultés, ne sautez pas dessus
modules.lua

Un ex domoticzien
rimram31
Messages : 659
Inscription : 04 oct. 2015, 11:22
Localisation : Toulouse

Re: Script .SH ne fonctionne pas (NAS Synology)

Message par rimram31 »

C'est assez clair pourtant :D (pour ceux qui y passe leurs journées ...) Il lui manque la fin du if, le fi (en sh) effectivement le # (en 1ere colonne ?) est un commentaire (sauf la toute première ligne du bin/sh mais ça c'est encore une autre histoire ...).
Raspberry Pi 2 + carte RF pi "maison" + Domoticz
Sonde Oregon + Aliexpress - Prises Chacon (3500W) - 1wire DS18B20
Gaz
Messages : 224
Inscription : 17 oct. 2015, 10:30

Re: Script .SH ne fonctionne pas (NAS Synology)

Message par Gaz »

Meme sans le # ca bug !

Code : Tout sélectionner

sh: missing

Il doit me manquer une truc à installer sur le nas
rimram31
Messages : 659
Inscription : 04 oct. 2015, 11:22
Localisation : Toulouse

Re: Script .SH ne fonctionne pas (NAS Synology)

Message par rimram31 »

rimram31 a écrit :... sauf la toute première ligne du bin/sh mais ça c'est encore une autre histoire ...
Désolé, j'aurai du être plus explicite dès mon premier post. Le premier #, plutôt le #! en 1ere ligne/1ere colonne est quelque chose de particulier.

Les commandes du fichier sont des commandes "shell", il en existe plusieurs (ssh, csh, bash ...) là c'est du sh. Tu pourrais exécuter ton script en tapant en ligne de commande "/usr/bin/sh le_nom_chemin_de_ton_fichier", fichier sans le #! en 1ere ligne, ça marche. La syntaxe #! en 1ere ligne est un raccourci qui permet de taper directement: le_nom_chemin_de_ton_fichier (plutot le + souvent ./le_nom_chemin_de_ton_fichier ) Tu peux en faire de même pour tout shell, du python, du perl, php ... ça n'a pas de lien avec sh.

Par contre ensuite le # en 1er caractère de sh est interprété comme un commentaire et donc ignoré, dans ton cas le #fi est donc ligne de commentaire et le if n'est pas fermé.

Code : Tout sélectionner

#!/bin/sh
result=$(curl -s http://192.168.X.XX:XXXX/json.htm?type=devices&rid=9l jq -r .result[].Havetimeout)
echo $result
if [ $result = "false" ]
then
sudo service domoticz.sz restart
fi
Ca devrait aller mieux, le plus simple est de chercher des exemples sur le net, on trouve vite son bonheur sur des exemples de syntaxe.
Raspberry Pi 2 + carte RF pi "maison" + Domoticz
Sonde Oregon + Aliexpress - Prises Chacon (3500W) - 1wire DS18B20
Gaz
Messages : 224
Inscription : 17 oct. 2015, 10:30

Re: Script .SH ne fonctionne pas (NAS Synology)

Message par Gaz »

Ok ok, je comprend mieux l'histoire du #.
Reste à trouver un exemple sur le net, enfin un exemple que je comprend...
Gaz
Messages : 224
Inscription : 17 oct. 2015, 10:30

Re: Script .SH ne fonctionne pas (NAS Synology)

Message par Gaz »

ca avance un peu ce matin, j'ai corrigé une erreur de syntax, utilisation du l au lieu |

voici maintenant le script :

Code : Tout sélectionner

#!/bin/sh
result=$(curl -s "http://192.168.X.XX:XXXX/json.htm?type=devices&rid=9"| jq -r .result[].HaveTimeout)
echo $result
if [ $result = "true" ]
then
		sudo service domoticz.sh restart
fi
Et le résultat une fois exécuté sur le NAS

Code : Tout sélectionner

SYNO> ./EDF21.sh
true
./EDF21.sh: line 7: sudo: not found
rimram31
Messages : 659
Inscription : 04 oct. 2015, 11:22
Localisation : Toulouse

Re: Script .SH ne fonctionne pas (NAS Synology)

Message par rimram31 »

Oops, je viens de relire le titre de ton post, tu es sur NAS synology, je ne connais pas l'OS linux qui tourne dessus (lsb_release -a ?) base debian ou redhat ??? Apparemment le package sudo ne soit pas être installé. Si tu l'appelles en ligne de commande, ça donne quoi ?

Code : Tout sélectionner

sudo
which sudo
sudo ... indique que la commande doit être exécutée avec les privilèges root, selon l'OS ça pourrait être différent, il y a quelques différences subtiles entre un linux base debian et base redhat (histoire de faire simple ...). Si tu te loggues root par exemple, tu n'as pas besoin de préciser sudo puisque tu as déjà les privilèges root.

Cherche de l'aide du coté des utilisateurs de ce NAS pour en savoir plus.
Raspberry Pi 2 + carte RF pi "maison" + Domoticz
Sonde Oregon + Aliexpress - Prises Chacon (3500W) - 1wire DS18B20
Gaz
Messages : 224
Inscription : 17 oct. 2015, 10:30

Re: Script .SH ne fonctionne pas (NAS Synology)

Message par Gaz »

voici le résultat :

Code : Tout sélectionner

SYNO> sudo
usage: sudo [-D level] -h | -K | -k | -V
usage: sudo -v [-AknS] [-D level] [-g groupname|#gid] [-p prompt] [-u user
            name|#uid]
usage: sudo -l[l] [-AknS] [-D level] [-g groupname|#gid] [-p prompt] [-U user
            name] [-u user name|#uid] [-g groupname|#gid] [command]
usage: sudo [-AbEHknPS] [-C fd] [-D level] [-g groupname|#gid] [-p prompt] [-u
            user name|#uid] [-g groupname|#gid] [VAR=value] [-i|-s] [<command>]
usage: sudo -e [-AknS] [-C fd] [-D level] [-g groupname|#gid] [-p prompt] [-u
            user name|#uid] file ...
SYNO> which sudo
/opt/bin/sudo
rimram31
Messages : 659
Inscription : 04 oct. 2015, 11:22
Localisation : Toulouse

Re: Script .SH ne fonctionne pas (NAS Synology)

Message par rimram31 »

Difficile de te débrouiller sans avoir la bête sous la main ;-) mais le message d'erreur que tu as eu "sudo not found" indique que le shell ne trouve pas la commande sudo que tu trouves par contre facilement en ligne de commande. Je sèche un peu (exécutes tu le script dans le même environnement/terminal que lorsque tu exécutes sudo ???). Essayer peut-être de remplacer dans le script sudo par son chemin complet /opt/bin/sudo ?

Code : Tout sélectionner

#!/bin/sh
result=$(curl -s "http://192.168.X.XX:XXXX/json.htm?type=devices&rid=9"| jq -r .result[].HaveTimeout)
echo $result
if [ $result = "true" ]
then
      /opt/bin/sudo service domoticz.sh restart
fi
Raspberry Pi 2 + carte RF pi "maison" + Domoticz
Sonde Oregon + Aliexpress - Prises Chacon (3500W) - 1wire DS18B20
Répondre