Exécution d'un script sh

Bonjour,
Disposant d’une connexion internet via un modem 4G, je souhaiterais pouvoir utiliser le modem pour envoyer des SMS de notification en cas de perte de 4G (tempête notamment).
IL s’agit d’un modem Huawei B715-23C.
J’ai récupéré sur le site Routeur4G un script .sh me permettant d’envoyer un sms de mon routeur.
J’ai testé ce script via SSH ainsi :

  • nom du fichier : sendsms_huawei.sh

  • Dépot du fichier directement dans le répertoire de Jeedom "/var/www/html/plugins/script/core/ressources et je l’exécute ainsi :

./sendsms_huawei.sh 192.168.1.1 admin password telnumber "Exemple de SMS Jeedom"

J’ai pu l’exécuter en étant identifié avec mon identifiant utilisateur puis passé en root (via su)
Je reçois bien le sms.
J’ai donc voulu créer une équipement dans Jeedom dans le plugin Script configuré ainsi :


Mais rien ne se passe et je ne reçois pas de sms.
Auriez-vous une piste ?
Bien à vous,
Caelion

Bonjour,

Tu as vérifié les droits sur le fichier .sh ?

Est-ce que tu as ajouté des logs dans ton .sh afin de voir s’il ne s’exécute vraiment pas ?

@Caelion Peut tu faire un ls -al dans le répertoire ou tu a placer ce script ?

Bonjour à tous les 2,
Merci pour vos retours.
Je m’aperçois que j’ai pas été bon, je ne vous ai pas mis le script sh en question
Le voici (source : [TUTO] Envoyer des SMS en ligne de commande — Forum routeur 4G) :

#!/bin/sh
# Written by oga83

# Check command line parameters
if [ "$#" -ne 5 ]; then
    printf "Syntax: %s <IP> <Username> <Password> <PhoneNumber> <Message>\n" $0
    exit 0
fi

ROUTER_IP=$1
ROUTER_USERNAME=$2
ROUTER_PASSWORD=$3
SMS_NUMBER=$4
SMS_TEXT=$5
TMP_HEADER_FILE=/tmp/headers.tmp

CURL_OPT=--silent

ProcessRouterResponseHeader()
{
	# Get token from header
	NEWTOKEN=`cat $TMP_HEADER_FILE | grep "__RequestVerificationTokenone: " | awk -F' ' '{print $2}'`
	if [ ! -z "$NEWTOKEN" ]; then TOKEN=$NEWTOKEN; fi
	NEWTOKEN=`cat $TMP_HEADER_FILE | grep "__RequestVerificationToken: " | awk -F' ' '{print $2}'`
	if [ ! -z "$NEWTOKEN" ]; then TOKEN=$NEWTOKEN; fi
	NEWSESSIONID=`cat $TMP_HEADER_FILE | grep "Set-Cookie: SessionID=" | awk -F' ' '{print $2}' | cut -b 1-138`
	if [ ! -z "$NEWSESSIONID" ]; then SESSIONID=$NEWSESSIONID; fi
echo $NEWTOKEN
}

GetRouterData() # Param1: Relative URL
{
	#echo "GET on http://$ROUTER_IP$1"
	RESPONSE=`curl $CURL_OPT --request GET http://$ROUTER_IP$1 \
       		--dump-header $TMP_HEADER_FILE \
        	-H "Cookie: $SESSIONID" -H "__RequestVerificationToken: $TOKEN" -H "Content-Type: application/x-www-form-urlencoded; charset=UTF-8" \
       		`
	ProcessRouterResponseHeader
}

GetSessionToken() # No parameters
{
	# Get SessionID and RequestVerificationToken
	GetRouterData '/api/webserver/SesTokInfo'
        SESSIONID="SessionID="`echo "$RESPONSE"| grep -oPm1 "(?<=<SesInfo>)[^<]+"`
        TOKEN=`echo "$RESPONSE"| grep -oPm1 "(?<=<TokInfo>)[^<]+"`
}

PostRouterData() # Param1: RelativeUrl, Param2: Data, Param3:bAskNewToken
{
	# Get new token if necessary
	if [ ! -z $3 ]; then
		GetSessionToken
	fi

	#echo "POST on http://$ROUTER_IP$1 :" $2
	RESPONSE=`curl $CURL_OPT --request POST http://$ROUTER_IP$1 \
	       --dump-header $TMP_HEADER_FILE \
	       -H "Cookie: $SESSIONID" -H "__RequestVerificationToken: $TOKEN" -H "Content-Type: application/x-www-form-urlencoded; charset=UTF-8" \
	       --data "$2"`
	ProcessRouterResponseHeader
}

# Get initial SessionID and RequestVerificationToken
GetSessionToken

# Login
CREDENTIALS=`printf $ROUTER_PASSWORD | sha256sum | head -c64 | base64 -w0`
CREDENTIALS=`printf "%s%s%s" $ROUTER_USERNAME $CREDENTIALS $TOKEN | sha256sum | head -c64 | base64 -w0`
DATA=`printf "<request><Username>%s</Username><Password>%s</Password><password_type>4</password_type></request>" $ROUTER_USERNAME $CREDENTIALS`
PostRouterData "/api/user/login" "$DATA"

# Send SMS
DATA="<?xml version='1.0' encoding='UTF-8'?><request><Index>-1</Index><Phones><Phone>$SMS_NUMBER</Phone></Phones><Sca></Sca><Content>$SMS_TEXT</Content><Length>${#SMS_TEXT}</Length><Reserved>1</Reserved><Date>`date +'%F %T'`</Date></request>"
PostRouterData "/api/sms/send-sms" "$DATA" 1

# Logout
PostRouterData "/api/user/logout" "<request><Logout>1</Logout></request>"

@olive Le résultat de ls -al est le suivant :

user@VM-Debian9-Jeedom:/var/www/html/plugins/script/core/ressources$ ls -al
total 44
drwxrwxr-x 2 www-data www-data 4096 févr. 19 04:29 .
drwxrwxr-x 8 www-data www-data 4096 juil. 11  2017 ..
-rwxrwx--- 1 www-data www-data  261 févr. 19 03:40 DS18B20_raspi.sh
-rwxrwxr-x 1 www-data www-data    0 août   3  2019 .gitempty
-rwxrwxr-x 1 www-data www-data   52 août   3  2019 .htaccess
-rwxrwx--- 1 www-data www-data 2818 févr. 19 03:14 sendsms_huawei.sh
-rwxrwxr-x 1 www-data www-data  482 févr. 10  2019 ssh_commande.php
-rwxrwxr-x 1 www-data www-data   76 févr. 10  2019 ssh_command.sh
-rwxrwxr-x 1 www-data www-data   85 janv. 21  2018 ssh_samsung copy 1.sh
-rwxrwxr-x 1 www-data www-data   76 févr. 10  2019 ssh_samsung copy 2.sh
-rwxrwxr-x 1 www-data www-data   57 févr. 10  2019 ssh_samsung.sh
-rwxrwx--- 1 www-data www-data  303 févr. 19 04:11 testconversion

Le fichier a été créé avec le bouton vert du plugin script présent lorsque l’on ajoute une commande.

@chris777c
Pour les droits, je pense que la réponse est donné par la commande d’Olive (je n’avais pas vérifié avant…).
Je vois que les 3 scripts créés cette semaine (depuis mon passage en V4) : sendsms_huawei.sh, testconversion et DS18B20_raspi.sh (téléchargé hier du market pour voir) semblent avoir moins de droits que ceux créés avant.

J’ai donc fait en ligne de commande

chmod 775 /var/www/html/plugins/script/core/ressources/sendsms_huawei.sh

Et là, ça fonctionne !

@chris777c
Concernant les logs dans le sh : puis-je ajouter des lignes pour les voir dans le log Jeedom ? Si oui, peux tu m’aider s’il te plaît ?

Merci beaucoup à tous les 2
Savez-vous pourquoi à la création d’un nouveau script, celui-ci n’a plus les mêmes droits qu’auparavant ?

Voici, une bonne doc pour les logs : https://www.cubicrace.com/2016/03/efficient-logging-mechnism-in-shell.html

Le chemin des logs jeedom est le suivant : var/www/html/log/

Ensuite il faudra mettre en place du Logrotate (il y a des tutos sur le net).

1 « J'aime »

Bonjour,
j’ai du louper un truc, mais comment tu arrive à envoyer un SMS via le modem si tu a perdu la connexion 4G du-dit modem ?

ben … en 0G

ce n’est pas parceque tu n’a pas de data que tu n’a pas de voix !

Ok chriss777c, merci je vais regarder.

@pifou : Comme le dit Olive, avec le réseau « standard », le « avant » de l’internet mobile :stuck_out_tongue: