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

Linux Discussion :

Script et Crontab


Sujet :

Linux

  1. #1
    Membre habitué
    Inscrit en
    Février 2006
    Messages
    268
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 268
    Points : 175
    Points
    175
    Par défaut Script et Crontab
    Bonjour à tous, j'ai fait un petit script qui me permet de me connecter sur d'autres serveurs pour récupérer le /etc/* , ce qui permet de sauvegarder la configuration des équipements

    Le script va lire un fichier csv ligne par ligne, et pour chaque ligne va se connecter sur l'équipement en ssh via un échange de clé. Cela fonctionne bien que je le lance à la main ou en crontab.

    J'ai rajouté une petite vérification que la sauvegarde s'est bien lancée, la vérification est simple :
    - Je compte le nombre de lignes dans mon fichier CSV et je met le résultat dans une variable,
    - Je compte le nombre de dossiers où sont sauvegardés les sauvegardes et je mets le résultat dans une variable,
    - Je compare les 2 variables et si le résultat n'est pas le même alors j'envoie un email.

    Quand je lance le script à la main la vérification fonctionne bien, quand le résultat et le même je ne reçois pas de mail et quand il est différent (car j'ai supprimé un répertoire pour tester) je reçois bien un mail.

    Cependant cette vérification ne fonctionne pas quand le script est lancé par la crontab, je reçois un mail alors que si je vérifie à la main le nombre de dossier il est bien égal aux nombres de ligne de mon fichier CSV.

    Je suis pas très bon en script, mais si vous avez une petite idée du pourquoi je suis preneur.

    Voici mon script, peut-être qu'il pourra servir à d'autres personnes. Peut-être que vous allez avoir quelques conseils pour mon script, je suis preneur, ça doit être le 3eme script que je fais en l'espace de 5ans ... alors je suis très rouillé

    Merci de votre aide les gens ::

    Code bash : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    #!/bin/bash -x
     
    ## Vérification si le dossier existe ##
    date=$(date '+%Y-%m-%d')
    dir="/data/Conf_eqpt/Save_$date"
    if [ -d "$dir" ]; then
    echo "le dossier existe !"
    rm -rf $dir
    fi
     
    ## Création du dossier et sauvegarde des confs ##
    mkdir /data/Conf_eqpt/Save_$date
    cat /root/Save_eqpt/noms.csv |sed "s/ /_/g" |while IFS=";" read nom ip
    do
    echo $nom
    sleep 3;
    mkdir /data/Conf_eqpt/Save_$date/$nom
    scp -r -B -C -o ConnectTimeout=75 root@$ip:/etc/* /data/Conf_eqpt/Save_$date/$nom/
    done
     
     
    ## Verifie si la sauvegarde c'est bien passée ##
    nb_ligne=$(more /root/Save_eqpt/noms.csv | wc -l)
    nb_dossier=$(ls /data/Conf_eqpt/Save_$date | wc -l)
    if [ $nb_ligne != $nb_dossier ]; then
    echo "La sauvegarde ne s'est pas bien passee." | mail -s "Erreur de la sauvegarde des equipements" <a href="mailto:toto.tutu@totoland.com">toto.tutu@totoland.com</a>
    fi
    echo FIN
    exit 0

  2. #2
    Rédacteur/Modérateur
    Avatar de troumad
    Homme Profil pro
    Enseignant
    Inscrit en
    Novembre 2003
    Messages
    5 598
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 5 598
    Points : 7 837
    Points
    7 837
    Par défaut
    Il me semble qu'il faut mettre les chemin complet vers les fonctions que tu appelles :
    rm donne /bin/rm par exemple. Voici comment tu peux trouver ces chemins :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $ whereis rm
    rm: /bin/rm
    [troumad@bernard][~/public_html/2012]
    $ whereis echo
    echo: /bin/echo

  3. #3
    Membre habitué
    Inscrit en
    Février 2006
    Messages
    268
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 268
    Points : 175
    Points
    175
    Par défaut
    Merci Troumad mais le problème ne venait pas de la.

    En faite c'est l'utilisation de la commande "more" qui posait problème quand elle est utilisée dans la Crontab, elle va rajouter des lignes. (Je suppose que ce sont les entrer pour faire défiler le fichier).

    C'est bizarre car ça ne fait pas la même erreur quand je lance le script à la main.

    Enfin bref, une modification du "more" par un "cat" est le problème est résolu.

    Merci encore.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Pb script en crontab
    Par Alasta dans le forum Shell et commandes GNU
    Réponses: 1
    Dernier message: 22/08/2008, 17h26
  2. execution de script par crontab
    Par Z-fly dans le forum Administration système
    Réponses: 8
    Dernier message: 13/06/2008, 15h03
  3. [SHELL] Problème d'exécution script avec Crontab
    Par Leeloo_Multiboot dans le forum Shell et commandes GNU
    Réponses: 5
    Dernier message: 05/06/2008, 16h59
  4. Script FTP Crontab
    Par njogou dans le forum Shell et commandes GNU
    Réponses: 8
    Dernier message: 30/01/2007, 11h13
  5. Shell Script dans crontab
    Par Deepc dans le forum Linux
    Réponses: 3
    Dernier message: 30/03/2006, 11h39

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