Commande Shell qui ne s'exécute pas et sans erreur

Bonjour,

Je demande de l’aide, cela est mon premier code très simple que je souhaite mettre dans mon scénario mais la commande Shell ne s’exécute pas et je n’ai aucun retour d’erreur.

Si je lance la ligne de commande rclone dans une fenêtre shell sur mon Raspbian cela s’exécute parfaitement.
Merci d’avance pour votre aide

Le code dans le bloc code du scénario

$cmd = "rclone copy /var/www/html/backup onedrive:/00jeedom/backup -v";
$scenario->setLog('DEBUG REQUETTE : '.$cmd);
$result = shell_exec($cmd);
$scenario->setLog('RETOUR REQUETTE : '.$result);

Le Log qui est entregistré

[2022-01-28 17:38:57][SCENARIO] Start : Scenario lance manuellement.
[2022-01-28 17:38:57][SCENARIO] Exécution du sous-élément de type [action] : code
[2022-01-28 17:38:57][SCENARIO] Exécution d'un bloc code
[2022-01-28 17:38:57][SCENARIO] DEBUG REQUETTE : rclone copy /var/www/html/backup onedrive:/00jeedom/backup -v
[2022-01-28 17:38:57][SCENARIO] RETOUR REQUETTE :

Bonjour,

C’est quoi ?

Merci d’encadrer code et log avec la balise </> texte préformaté

Essai plutôt avec le plugin script

Bonsoir,

Pour capter les erreurs d’une commande Linux, il faut les rediriger sur le stdout en utilisant à la fin de la commande: 2>&1
2 c’est le stderr que l’on redirige vers 1 le stdout

$cmd = "rclone copy /var/www/html/backup onedrive:/00jeedom/backup -v 2>&1";
1 « J'aime »

‹ onedrive:/ › est le nom de ton stockage Cloud que tu indiques lors de la configuration de rclone.
avec rclone tu peux avoir plusieurs lieux de stockage, il faut donc indiquer sur quell stockage tu souhaites effectuer l’action. tu peux même synchroniser 2 lieux de stockage entre eux qui sont sur le cloud
J’ai été très inventif :slight_smile:, mon stockage sur Onedrive se nomme onedrive dans rclone de mon Raspberry.
J’utilise maintenant directement rclone car malheureusement le plugin cloudsyncpro ne prend pas en compte les services Microsoft.

1 « J'aime »

Merci, je n’avais jamais lu ça.

OK maintenant j’ai bien un message d’erreur :

  • <5>NOTICE: Config file « /var/www/.config/rclone/rclone.conf » not found - using defaults
    Failed to create file system for « onedrive:/00jeedom/backup »: didn’t find section in config file

Je vais faire des recherches pour ce message
Merci encore

J’ai bien vu ce plugin mais je voulais déjà essayer en code, je suis surpris de voir ce que l’on peut faire avec les codes en interaction dans Jeedom.

C’est le premier commentaire de la commande php shell_exec
https://www.php.net/manual/fr/function.shell-exec.php#106250

Pour le message d’erreur:
Quand c’est jeedom qui exécute, l’utilisateur est www-data. Il manque pour cet utilisateur la configuration de rclone.
Vous pouvez

  • Configurer rclone pour l’utilisateur root et faire exécuter la commande suivante par Jeedom:
$cmd = "sudo rclone copy /var/www/html/backup onedrive:/00jeedom/backup -v 2>&1";

OU

  • Copier le fichier de config de rclone de l’utilisateur qui fonctionne dans le fichier /var/www/.config/rclone/rclone.conf utilisé par rclone lancé par jeedom.

OU

  • Faire que la config de rclone par défaut soit correcte
1 « J'aime »

Merci encore @jpty, cela est mon premier code et tu me donnes une mine d’informations.
Je vais prendre également en référence le site que tu as indiqué.
Encore un grand merci, je devrais pouvoir avancer maintenant :slight_smile:

Bonsoir @Franckybel
Quand c’est bon oublie pas de cliquer sur solution du post de @jpty :wink:

1 « J'aime »

Ce sujet a été automatiquement fermé après 24 heures suivant le dernier commentaire. Aucune réponse n’est permise dorénavant.