Script type action message avec un script bash exécuté, retour valeur NOK

Core Alpha 4.4
Plugin en beta

Voici ma config dans le plugin script

Mon script en bash fait un echo d’une valeur numérique en sortie.
Je m’attendais à ce que cette valeur soit passé à jeedom via ce que l’on voit à droite et que du coup ma commande info numérique RESULT la récupère.

Or je n’ai rien en retour.

Pourtant avec le log en debug on voit le retour à 2

0003|[2023-04-23 14:23:04][DEBUG] : Execution de : sudo chmod +x /var/www/html/plugins/script/data/deleteCamRecordsV2.sh 2>/dev/null;/var/www/html/plugins/script/data/deleteCamRecordsV2.sh  250 *.jpg +7 => 2

N’ai-je pas compris un truc ?
Quelqu’un a-t-il une solution ?

:pray:

Tu as testé en changeant le sous-type message par slider par exemple.

ou plutôt mettre #message# dans valeur de l’info.

Oui j’ai tenté #message# et cela ne change rien.

Je dois rester en action message pour pouvoir passer mes paramètres au script bash :wink:
Dans le log tu vois on voit bien le 2 en retour, ce qui est juste mais impossible d’avoir l’info dans jeedom sauf là
Je cherche depuis ce midi

var/www/html/plugins/script/data/deleteCamRecordsV2.sh  250 *.jpg +7 => 2

j’ai essayé #value# aussi lol

et si tu met une simple valeur dans valeur de retour pour tester

Si je met en dur 8 ça passe

image

Dans le code que j’ai été voir

case 'script':
				if ($this->getType() == 'info' && isset(script::$_requet_cache[$request])) {
					return script::$_requet_cache[$request];
				}
				$cmd = 'sudo chmod +x ' . explode(' ', $request)[0] . ' 2>/dev/null;';
				if (strpos($request, '.php') !== false) {
					$cmd .= 'php ' . $request;
				} elseif (strpos($request, '.rb') !== false) {
					$cmd .= 'ruby ' . $request;
				} elseif (strpos($request, '.py') !== false) {
					$cmd .= 'python ' . $request;
				} elseif (strpos($request, '.pl') !== false) {
					$cmd .= 'perl ' . $request;
				} else {
					$cmd .= $request;
				}
				$request_shell = new com_shell($cmd . ' 2>&1');
				if (isset($_options['speedAndNoErrorReport']) && $_options['speedAndNoErrorReport'] == true) {
					$request_shell->setBackground(true);
				}
				$result = trim($request_shell->exec());
				log::add('script', 'debug', 'Exécution de : ' . $cmd . ' => ' . $result);
				if ($this->getType() == 'info') {
					script::$_requet_cache[$request] = $result;
					return $result;
				}

j’ai cru que c’était à cause de ca

if ($this->getType() == 'info') {
					script::$_requet_cache[$request] = $result;
					return $result;

que cela ne fonctionnait pas car il prend que le type info pas action mais en ne laissant que return $result, ca n’a rien changé

C’est bien ce qui me semblait, je pense que le core ne prévois pas l’utilisation de #message# dans un updateCmdId

C’est plutot ici que sa se passe :

https://github.com/jeedom/core/blob/beta/core/class/cmd.class.php#L1307

c’est rageant de voir sa valeur correcte dans le log debug et de ne pas pouvoir l’exploiter lol
Mais bon j’ai atteint mes limites niveau php avec ce que j’ai regardé et tenté

Pourtant c’est un truc qui a fonctionné autrefois

Si j’étais capable de faire en php ce que j’ai fait dans le script, je l’aurai fait…
Mais la j’ai le cerveau en compote.
J’ai dormi 4h depuis vendredi !

en ajoutant dans le core :

case 'message':
  $value = str_replace('#message#', $options['message'], $value);
  break;

sa fonctionne :wink:

Ou il faut mettre ca que je teste ?

https://github.com/jeedom/core/pull/2206/commits/538027ea985b210d97acb48e4c419250f01ca127

1 « J'aime »

J’ait fait la modif mais idem…

tu as bien mis #message# dans valeur de l’information ?

oui oui
je comprends pas

Exécution de : sudo chmod +x /var/www/html/plugins/script/data/deleteCamRecordsV2.sh 2>/dev/null;/var/www/html/plugins/script/data/deleteCamRecordsV2.sh  343 *.jpg => 4

Donc j’attends 4

image

Il me retourne le premier paramètre passé à mon script!

Oui je vient de voir que sa renvoie directement la valeur de #message#

Mais bon le plugin script me parait bizarre aussi

Quand tu as un script Action Message, dans un scénario tu as donc si tu sélectionnes l’action :

Donc si je met toto en titre et 343 *.jpg en message, le plugin script ne transmet pas #titre#

sudo chmod +x /var/www/html/plugins/script/data/deleteCamRecordsV2.sh 2>/dev/null;/var/www/html/plugins/script/data/deleteCamRecordsV2.sh #titre# 343 *.jpg => 4

Et ce que j’ai souligné ne fonctionne pas non plus. Contrairement à d’autre fonction message ou titre message sont passé et un retour est bien fait vers l’info souhaitée

parce que c’est pas #titre# mais #title#

Meme dans lanversion francaise?

Car jai dautre truc du type et c est bien #titre#

quel autre truc ? car si c’est un tag scénario sa marche parce que c’est toi qui a initié ce tag.

Attends, je regarde, avec ta modif je pense à un truc du coup… voir si je peux le faire fonctionner

Bon j’y ai cru mais non

Donc j’utilise #title# et #message#

Mon scénario modifié pour

Le log

0000|[2023-04-23 17:53:24]DEBUG : Exécution de : sudo chmod +x /var/www/html/plugins/script/data/deleteCamRecordsV2.sh 2>/dev/null;/var/www/html/plugins/script/data/deleteCamRecordsV2.sh 343 *.jpg => 4

Donc via #title# mes paramètres pas. #titre# était bien un tag à moi !! (fatigue, fatigue)

Donc avec ta modif dans le core je me suis dit que la valeur serait dans #message#
Mais non
image

image