IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Shell et commandes GNU Discussion :

Problème automatisation d'un bash avec ssh


Sujet :

Shell et commandes GNU

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Technicien réseau
    Inscrit en
    Décembre 2017
    Messages
    53
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 26
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Technicien réseau
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Décembre 2017
    Messages : 53
    Points : 32
    Points
    32
    Par défaut Problème automatisation d'un bash avec ssh
    Salut à tous,

    Alors voilà j'ai un problème, j'ai fais un petit script bash que voici :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    ssh root@mon_serveur "echo ' '>monfichier"
     
    cd /mondossier
    scp fichier1.txt root@mon_serveur:/root
     
    ssh root@mon_serveur "curl ..."
    Y-a-t'il quelque chose à activer au niveau de linux pour pouvoir automatiser sous crontab mon fichier bash ? J'ai fait un agent ssh et je l'ai ajouter pour m'éviter la demande de passphrase.

    Parce que le fait de faire cette commande (contenant mes commandes) fonctionne parfaitement :
    Mais une fois, l'avoir mis sous crontab, le script ne se lance pas (à 8 heures) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    00 08 * * * /home/user/mondossier/Fichier.sh
    Si quelqu'un a une solution à mon problème, je suis preneur.

    Bonne journée !

  2. #2
    Expert éminent sénior Avatar de Flodelarab
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    5 271
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 271
    Points : 13 536
    Points
    13 536
    Par défaut
    Bonjour

    C'est souvent un problème de chemin d'accès des exécutables.
    Dans ta console, cela paraît évident mais dans un script donné à cron, il vaut mieux mettre les chemins complets.

    Reprends ton script et complète les chemins de commandes.

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Technicien réseau
    Inscrit en
    Décembre 2017
    Messages
    53
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 26
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Technicien réseau
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Décembre 2017
    Messages : 53
    Points : 32
    Points
    32
    Par défaut
    Ah donc il n'y a rien à "activer" ?

    Pourtant je suis quasiment sûr du chemin que j'ai mis sur le cron, j'ai mis mon fichier dans le dossier "user", je vais voir si ça marche.



    J'édite mon message pour dire que ça n'a pas l'air de fonctionner entre le ssh et cron parce que j'ai juste fais une simple commande :

    ssh root@le_serveur "ls"

    et rien ne s'est affiché

  4. #4
    Expert confirmé
    Homme Profil pro
    Développeur informatique en retraite
    Inscrit en
    Avril 2008
    Messages
    2 102
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Développeur informatique en retraite

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 102
    Points : 5 849
    Points
    5 849
    Par défaut
    Citation Envoyé par Xam29870 Voir le message
    Mais une fois, l'avoir mis sous crontab, le script ne se lance pas (à 8 heures) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    00 08 * * * /home/user/mondossier/Fichier.sh
    Hum... Qu'est-ce qui te permet de croire que ton script ne s'est pas exécuté à 8h?

    Il faut savoir que "crontab" permet d'exécuter des scripts dans un autre environnement que celui de l'utilisateur courant, à une ou plusieurs heures données et qu'il ne produit aucune sortie "directe".

    Citation Envoyé par Xam29870 Voir le message
    J'édite mon message pour dire que ça n'a pas l'air de fonctionner entre le ssh et cron parce que j'ai juste fais une simple commande :

    ssh root@le_serveur "ls"

    et rien ne s'est affiché
    Ben non. C'est normal: les exécutables lancés par "crontab" n'affichent rien. Ça ne veut pas dire qu'ils ne sont pas lancés!!!
    S'il y a des données à afficher, généralement, soit on les envoie par mail, soit on les stocke dans un fichier.

    Dans ton cas, si tu veux pouvoir observer la sortie d'une commande, tu peux faire:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ssh root@le_serveur "ls" > /tmp/sortie-ls-$(date "+%Y/%m/%d-%H:%M:%S").log
    puis, regarder le contenu du fichier généré dans "/tmp" une fois l'heure d'exécution passée.

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    Technicien réseau
    Inscrit en
    Décembre 2017
    Messages
    53
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 26
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Technicien réseau
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Décembre 2017
    Messages : 53
    Points : 32
    Points
    32
    Par défaut
    Ok tu viens de m'apprendre quelque chose, je ne savais pas que le cron n'affichait rien !

    Du coup j'ai testé ta technique de stocké le résultat de la commande dans un fichier, mais rien, aucune trace du fichier.

    Alors du coup j'ai vérifié mon répertoire, en faisant un vim dessus, et mon script s'affiche bien.

    Ensuite j'ai testé la commande en dehors du script, donc j'ai testé un truc du style :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    ssh root@le_serveur "ls" > /tmp/sortie-ls-test.log
    Et j'obtiens bien mon fichier contenant le ls du serveur.

    Je ne comprends pas, le ssh ne bloque en rien les scripts du cron ?

  6. #6
    Expert éminent sénior Avatar de Flodelarab
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    5 271
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 271
    Points : 13 536
    Points
    13 536
    Par défaut
    Citation Envoyé par Xam29870 Voir le message
    Je ne comprends pas, le ssh ne bloque en rien les scripts du cron ?
    Pourquoi voudrais-tu que ça bloque ?
    ssh est juste une connexion sécurisée. Cron planifie l'exécution de tâches.
    La commande ssh est exécutée en local à l'heure indiquée. Et son travail est de se connecter à ta cible distante.

  7. #7
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2014
    Messages
    50
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Boutique - Magasin

    Informations forums :
    Inscription : Août 2014
    Messages : 50
    Points : 58
    Points
    58
    Par défaut
    Bonjour,

    Le plus souvent ça ne fonctionne pas par ce que le full path du script n’est pas précisé ou bien que les droits d’execution ne sont pas ajoutés.

  8. #8
    Nouveau membre du Club
    Homme Profil pro
    Technicien réseau
    Inscrit en
    Décembre 2017
    Messages
    53
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 26
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Technicien réseau
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Décembre 2017
    Messages : 53
    Points : 32
    Points
    32
    Par défaut
    Salut à tous,

    Les chemins sont correct. En faite je crois que le problème vient du fait que le cron ne connaît pas l'agent ssh qui me permet de me connecter au serveur ssh sans passphrase.

    J'essaie de trouver des solutions en allant sur internet et en tapant "crontab ssh agent" mais je trouve pleins de réponses différentes en utilisant un certain "keychain".

    Pouvez-vous m'éclairez pour ceux qui ont déjà eu affaire à ce genre de problème entre le crontab et l'agent ssh

    Merci d'avance et bonne journée

  9. #9
    Expert confirmé
    Homme Profil pro
    Développeur informatique en retraite
    Inscrit en
    Avril 2008
    Messages
    2 102
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Développeur informatique en retraite

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 102
    Points : 5 849
    Points
    5 849
    Par défaut
    Afin qu'on ait un peu plus de précision, pourrais-tu nous montrer le résultat de ls -l /home/user/mondossier/Fichier.sh?

    Pourrais-tu aussi nous montrer le contenu de ton script "/home/user/mondossier/Fichier.sh" ?

    Et, si ton script utilise "ssh", quel est le résultat de which ssh?

  10. #10
    Nouveau membre du Club
    Homme Profil pro
    Technicien réseau
    Inscrit en
    Décembre 2017
    Messages
    53
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 26
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Technicien réseau
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Décembre 2017
    Messages : 53
    Points : 32
    Points
    32
    Par défaut
    1) ls -l :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    -rwxr-xr-x 1 user user 1079 févr. 19 16:09 /home/user/EnvoieDonnee.sh
    2) Contenu du script:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    #!/bin/bash
     
    day=$(date +%Y-%m-%d)
     
     
    ssh root@serveur "echo ''>fichier_finale"
     
    cd /home/user/Stats
     
    scp json-valeur-$day.txt root@serveur:/root/fichier_finale
     
    ssh root@serveur "curl -X POST --data-binary @fichier_finale http://127.0.0.1:9023/metrics"
    3) Résultat de la commande "which ssh" :
    Du coup je pense que le soucis vient de l'agent ssh ainsi que du crontab qui n'arrive à détecter l'agent.

  11. #11
    Expert éminent sénior Avatar de Flodelarab
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    5 271
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 271
    Points : 13 536
    Points
    13 536
    Par défaut
    "ça marche pas" n'est toujours pas un message d'erreur exploitable. Il faut que tu regardes dans les fichiers de traces (logs) de cron pour voir ce qui se passe. Ou que tu rediriges la sortie et la sortie d'erreur de ton script vers un fichier que tu liras.


    Ensuite, si c'est vraiment un problème d'agent, ( ce qui est possible puisqu'il va chercher dans ~ qui n'est pas le bon dossier dans cron ), tu peux utiliser l'option -i de ssh pour préciser le fichier qui t'identifie.


    Enfin, d'un point de vue sécurité, ça craint. Ta connexion est sécurisée par un mot de passe; tu peux remplacer par une paire de clés, protégées par une passphrase. Mais cron s'identifie au serveur distant sans intervention humaine. Donc faille de sécurité.
    Les fichiers de traces t'en apprendront plus.

Discussions similaires

  1. Problème compilation sur le bash linux avec Windows
    Par adrien.givry dans le forum Général Java
    Réponses: 0
    Dernier message: 09/09/2016, 20h04
  2. Problème avec SSH sur Debian Wheezy
    Par jaymzwise dans le forum Administration système
    Réponses: 1
    Dernier message: 25/09/2014, 16h16
  3. [Jenkins] Problème de transfert de fichier avec SSH Publish over
    Par Dev-pro dans le forum Intégration Continue
    Réponses: 1
    Dernier message: 19/07/2013, 15h28
  4. problème grep avec SSH
    Par Eric9 dans le forum Linux
    Réponses: 1
    Dernier message: 05/08/2010, 19h31
  5. Problèmes automatisation d'active directory avec exchange !
    Par jere1985 dans le forum Windows Serveur
    Réponses: 2
    Dernier message: 28/01/2009, 15h49

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo