Avant toute chose merci de (re)prendre connaissance de la charte et de la respecter.
Pour résumer :
- Avant de poser une question, je cherche si la réponse existe
- Je suis poli, courtois et je respecte tout un chacun sur le forum
- Si un post m'agace : je m'en éloigne plutôt que de répondre d'une façon qui pourrait être mal interprétée


Il n'est jamais du luxe que de rappeler des choses simples :
Courtoisie, amabilité, politesse et bonne humeur sont les maîtres mots pour un forum sympathique, bienveillant et accueillant :)

Toute la communauté vous remercie

Lancer des scripts/commandes sur une machine distante

Avatar de l’utilisateur
Sshafi
Actif
Messages : 3891
Inscription : 01 juil. 2014, 16:08
Localisation : Albi

Lancer des scripts/commandes sur une machine distante

Message par Sshafi » 15 nov. 2016, 10:32

Nous allons voir comment, à partir de Jeedom, exécuter un script ou une commande sur une machine linux distante.

Afin d'arriver à nos fins, nous allons utiliser le plugin script et nous allons créer un authentification ssh par clé entre la machine Jeedom et la machine distante.


Pour la facilité du tuto, on va considérer :
  • MY_JEEDOM : La machine où Jeedom est installée.
  • CP_DST : La machine sur laquelle on veut exécuter une commande/un script.
  • IP_DST : L'adresse IP de la machine CP_DST.
  • USR_DST : L'utilisateur à partir duquel on lancera la commande/le script sur la machine CP_DST.
  • CMD_DST : La commande/le script que l'on veut exécuter
1. Création de la clé rsa :
  • Se connecter en ssh sur MY_JEEDOM.
  • Créer un dossier home pour l'utilisateur www-data : sudo mkdir /home/www-data
  • Donner l’appartenance à l'utilisateur www-data sur ce dossier : sudo chown -R www-data:www-data /home/www-data/
  • Modifier le chemin du home de l'utilisateur www-data et lui assigner un shell : sudo vi /etc/passwd (ou, si vous préférez l'éditeur nano : sudo nano /etc/passwd )
  • Modifier la ligne qui commence par www-data pour qu'elle ressemble à ça :

    Code : Tout sélectionner

    www-data:x:33:33:www-data:/home/www-data:/bin/bash
  • S'identifier en tant que www-data : sudo su - www-data
  • Générer une clé rsa : ssh-keygen -t rsa -b 4096
  • Des questions vont vous être posées :

    Code : Tout sélectionner

       Enter file in which to save the key (/home/www-data/.ssh/id_rsa):
       Enter passphrase (empty for no passphrase):
       Enter same passphrase again:
    Ne rien mettre et taper sur Enter à chaque fois.
2. Copie de la clé publique sur la machine CP_DST :
  • Sur la machine CP_DST et connecté en ssh en tant que USR_DST créer le répertoire pour accueillir la clé (S'il n'existe pas) : mkdir ~/.ssh
  • Sur la machine MY_JEEDOM toujours en étant identifié en tant que www-data : cat ~/.ssh/id_rsa.pub | ssh USR_DST@IP_DST "cat - >> ~/.ssh/authorized_keys"
  • Des questions vont vous être posées :

    Code : Tout sélectionner

       Are you sure you want to continue connecting (yes/no)?
       Warning: Permanently added 'IP_DST' (ECDSA) to the list of known hosts.
       USR_DST@IP_DST's password:
  • Taper "yes" et le mot de passe de l'utilisateur USR_DST.
Rmq : Répéter l'étape 2. pour toutes les machines linux sur lesquelles vous souhaitez lancer des commandes/scripts.


3. Finalisation :

Une fois fini :
  • Retourner sur l'utilisateur "normal" de la machine MY_JEEDOM : exit
  • Re-modifier le fichier /etc/passwd : sudo vi /etc/passwd
  • Modifier la ligne qui commence par www-data pour qu'elle ressemble à ça :

    Code : Tout sélectionner

    www-data:x:33:33:www-data:/home/www-data:/usr/sbin/nologin
4. Création du script dans Jeedom :
  • Créer un script dans le plugin script.
  • Ajouter une commande script.
  • Modifier les paramètres de la commande :

    Code : Tout sélectionner

       Type script : Script
       Type : Action / Défaut
       Requête : ssh USR_DST@IP_DST sudo CMD_DST
  • Enregistrer
  • Cliquer sur le bouton Tester de la commande pour voir si cela marche bien.
5. Widget de lancement de commande (Astuce de Lunarok sur le forum) :
  • Modifier le type de la commande en : Action / Message
  • Modifier la requête en : ssh USR_DST@#title# sudo #message#
  • Aller sur le dashboard pour tester le widget correspondant à ce script.
  • Dans le champ title, saisir IP_DST
  • Dans le champ message, saisir CMD_DST
  • Cliquer sur le bouton afin de lancer la commande CMD_DST
??? Menfin ...
VM ESXi # Aeon Lab Gen5 | RFXtrx433E | ...
Trucs & Astuces

Verrouillé

Revenir vers « Utilisation & Astuces »

Qui est en ligne ?

Utilisateurs parcourant ce forum : Aucun utilisateur inscrit et 1 invité