[DEMANDE/AIDE] Création d'un script pour synchronisation

Bonjour @ tous,
N’ayant aucune connaissance en programmation, je cherche quelqu’un qui serait capable de me créer un petit script afin de synchroniser 2 dossiers distants. Le premier dossier se situe sur un Owncloud sur serveur virtuel et le deuxième sur mon NAS Rpi4 Openmediavault.
Dans un widget sous Jeedom, l’idée serait d’avoir 2 champs: « dossier source » et « dossier cible » à remplir et un bouton exécuter. Le bouton exécuter lancerait ensuite le script de synchronisation.
Cela parait simple sur le papier mais n’ayant aucune connaissance en la matière, j’aurai besoin d’aide sur le sujet.
Je ne viens pas les mains vides, j’ai tout de même une ligne de commande qui fonctionne et l’idée globale serait d’arrêter de me logger sous Putty pour faire la synchro car je dois laisser mon PC allumé.
Voici la ligne de commande qu’il faudrait que j’intègre dans un script en remplaçant « NOM_DU_DOSSIER_CIBLE » et « NOM_DU_DOSSIER_SOURCE » par les noms que j’aurai indiqués dans les fameux champs du widget.
sudo owncloudcmd -u MONCOMPTE -p MONMDP /srv/dev-disk-by-label-Samsung/**NOM_DU_DOSSIER_CIBLE** https://MON.SERVEUR/MONCOMPTE/owncloud/remote.php/webdav/**NOM_DU_DOSSIER_SOURCE**
Merci d’avance pour votre aide ou vos idées

Bonjour,

Hypothèse : Jeedom V3
Votre ligne de commande vous pouvez déjà l’inscrire dans un script #/bin/bash dans le dossier /var/www/html/plugins/script/core/ressources de ton jeedom.
Le fichier doit avoir l’extension .sh et doit être exécutable chmod +x sur le fichier (tout ça en mode root).
Tu peux également changer le propriétaire du script vers chown www-data:www-data.

La ligne de commande, vous pouvez la changer en
sudo owncloudcmd -u MONCOMPTE -p MONMDP /srv/dev-disk-by-label-Samsung/$1 https://MON.SERVEUR/MONCOMPTE/owncloud/remote.php/webdav/$2

$1 argument du fichier script et $2 argument deux.

Pour exécuter le script ./monScript.sh `NOM_DU_DOSSIER_CIBLE NOM_DU_DOSSIER_SOURCE

Ensuite vous installez le plugin script et créer un objet script dans le plugin puis ajouter une commande action en mode message :
Capture d’écran de 2020-03-22 15-42-31

dans la partie requête inscrire : /var/www/html/plugins/script/core/ressources/monScript.sh #title# #message#

Le widget sera donc dans la partie title : Dossier source et dans le message la partie destination.

Ce n’est pas très propre mais c’est rapide et cela fonctionne.

Bonjour chris,
j’ai suivi ton tuto. J’ai donc procédé comme suit:

  1. création de mon script « Synchro.sh » dans le dossier /var/www/html/plugins/script/core/ressources
  2. Exécution de la commande « chmod + x Synchro.sh » en mode « sudo su »
  3. Exécution de la commande « chown www-data:www-data Synchro.sh »
  4. Création d’un objet nommé Synchro dans Jeedom avec le plugin script paramétré comme indiqué plus haut

Et là ça bloque… j’ai le message d’erreur "Erreur dans l’exécution du terminal, la valeur retournée est : 1. Détails : Source dir ‹ /srv/dev-disk-by-label-Samsung/MON_FICHIER › does not exist.

J’ai oublié de préciser que le dossier de destination se trouve dans un autre Rpi :sweat_smile:
J’ai essayé de rajouter des commandes du style « ssh ID:MDP@ADRESSEIP/MON_FICHIER_DESTINATION… » ou « scp… » mais cela ne marche pas. Pas assez calé en la matière :disappointed:

Tu peux ajouter dans le script, la méthode du sshpass :

https://www.zem.fr/executer-une-commande-linux-via-ssh-en-precisant-le-mot-de-passe/

Cela pourrait donner :

sshpass -p mon_mot_de_passe ssh -o StrictHostKeyChecking=no mon_user@ip_serveur_ou_executer_script ‹ sudo owncloudcmd -u MONCOMPTE -p MONMDP /srv/dev-disk-by-label-Samsung/$1 https://MON.SERVEUR/MONCOMPTE/owncloud/remote.php/webdav/$2 ›

Du coup j’ai essayé avec le nouveau script et cela ne fonctionne pas.
J’ai rentré directement sous putty cette ligne de code pour me connecter pour essayer
sshpass -p mon_mot_de_passe ssh -o StrictHostKeyChecking=no mon_user@ip_serveur_ou_executer_script
mais j’ai le même message d’erreur que sous Jeedom

D’après le message, je dirais que ton rpi sur 192.168.1.80 n’accepte l’authentification via password pour l’IP 192.168.1.45, il faut regarder la conf ssh du pi en .80.

Bon, je crois que je ne peux pas aller plus loin. Mes compétences s’arrêtent là :disappointed:
Merci quand même de ton aide Chris :wink: