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 :

Problème script Bash


Sujet :

Linux

  1. #1
    Nouveau membre du Club
    Inscrit en
    Janvier 2005
    Messages
    62
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 62
    Points : 39
    Points
    39
    Par défaut Problème script Bash
    Bonjour à tous,

    Ca fait un petit moment que j'ai pu fait de script bash, donc je vous joins un bout de code que j'ai fais plus ce qu'il me retourne si il existe une ligne dans mon fichier log :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    #!/bin/bash
     
    echo "Demarrage d'apache"
    /usr/local/apache2/bin/apachectl start >> log
    cat log|
    while read ligne
    do
       if [ "$ligne" != "" ]; then
    	echo "Lancement d'apache echoue!"
    	result="fail"
       fi
    done
    echo $result
    En retour :

    Demarrage d'apache
    Lancement d'apache echoue!

    Aparament hors de la boucle le script ne connait plus la variable result... si quelqu'un pourrait me dire si c'est bien ça et comment y remédier.

    Thx d'avance

  2. #2
    Membre confirmé
    Avatar de bster
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    372
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mai 2005
    Messages : 372
    Points : 497
    Points
    497
    Par défaut
    ce qu'il faut faire pour etre propre c'est plustot :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
     
    whil read linge .........
    do
    if 
              ...
              ...
              echo "FAILED"
              exit 1
    fi
    done
    ...
    echo "OK"
    exit 0
    parceque le while c'est comme sa traduction tant que toute variable valorisée dans la boucle ne l'est plus à l'exterieur
    en plus tu ne gere pas de status de sortie (c'est pas tjrs utile) mais on devrait tjrs l'utiliser quand même.
    Comité de lutte contre le langage SMS sur les forums
    Veuillez écrire dans un langage compréhensible par les humains, merci.

  3. #3
    Nouveau membre du Club
    Inscrit en
    Janvier 2005
    Messages
    62
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 62
    Points : 39
    Points
    39
    Par défaut
    Le problème c'est qd j'arrive à la condition ou je fais echo "Failed" je fais ensuite le exit 1 mais il ne quitte pas totalement le script mais juste la boucle et il fait ensuite le echo "OK".
    :-s
    Moi je voudrais qu'il me fasse le echo "Failed" et qu'il quitte le script pour de bon.

    Merci de ton aide bster

  4. #4
    Membre confirmé
    Avatar de bster
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    372
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mai 2005
    Messages : 372
    Points : 497
    Points
    497
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    "FP" [New] 13L, 166C written                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         
    ROMULUSROMULUS[DEV_TEST]/tmp>touch log
    ROMULUSROMULUS[DEV_TEST]/tmp>chmod +x FP
    ROMULUSROMULUS[DEV_TEST]/tmp>./FP
    result 
    ROMULUSROMULUS[DEV_TEST]/tmp>echo 1 > log
    ROMULUSROMULUS[DEV_TEST]/tmp>./FP
    Lancement d'apache echoue!
    fail
    ROMULUSROMULUS[DEV_TEST]/tmp>rm FP
    ROMULUSROMULUS[DEV_TEST]/tmp>rm log
    ROMULUSROMULUS[DEV_TEST]/tmp>
    Comité de lutte contre le langage SMS sur les forums
    Veuillez écrire dans un langage compréhensible par les humains, merci.

  5. #5
    Nouveau membre du Club
    Inscrit en
    Janvier 2005
    Messages
    62
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 62
    Points : 39
    Points
    39
    Par défaut
    Code : 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
     
    #!/bin/bash
     
    echo "Demarrage d'apache"
    /usr/local/apache2/bin/apachectl start >> log
    cat log|
    while read ligne
    do
       if [ "$ligne" != "" ]; then
    	echo "Lancement d'apache echoue!"
    	echo "Lancement d'apache echoue!" | mail -s "Demarrage Apache" monmail@monfai.com
    	exit 1
       fi
    done
     
    	echo "Lancement d'apache reussi!"
    	echo "Lancement d'apache reussi!" | mail -s "Demarrage Apache" monmail@monfai.com
     
    rm log
    exit 0
    Voici mon code complet :
    Quand je le lance une première fois j'obtiens :
    Demarrage d'apache
    Lancement d'apache reussi!
    Quand je le relance (donc cette fois-ci apache est déjà lancé) :
    Demarrage d'apache
    Lancement d'apache echoue!
    Lancement d'apache reussi!
    Donc il fait bien le premier echo, passe le exit 1 et fait ensuite le deuxième echo ...

    Donc c'est bien que dans ce cas le exit ne quitte pas totalement non?

  6. #6
    Membre confirmé
    Avatar de bster
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    372
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mai 2005
    Messages : 372
    Points : 497
    Points
    497
    Par défaut
    et si tu testes purement et simplement le retour systeme d'apache ?


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    echo "Demarrage d'apache"
    /usr/local/apache2/bin/apachectl start >> log 
    #teste le retour systeme de la commande
    if [ $? != 0 ]; then
       echo KO 
       exit 1
    else
       echo OK
       exit 0
    fi
    parceque bon bash je l'utilise pas ou tres peu alors j'ai des habitudes qui effectivement marchent sous KSH mais pas forcément sous bash.
    Comité de lutte contre le langage SMS sur les forums
    Veuillez écrire dans un langage compréhensible par les humains, merci.

  7. #7
    Nouveau membre du Club
    Inscrit en
    Janvier 2005
    Messages
    62
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 62
    Points : 39
    Points
    39
    Par défaut
    le hic c'est que la commande "/usr/local/apache/bin/apachctl start" retourne toujours 0 qu'apache soit déjà en marche ou non, c juste au niveau de la sortie standard qu'elle sort une erreur :
    httpd (pid 8018) already running
    C'est pourquoi j'ai du passer par un fichier.

    :S

  8. #8
    Membre confirmé
    Avatar de bster
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    372
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mai 2005
    Messages : 372
    Points : 497
    Points
    497
    Par défaut
    alors dans ce cas testes la presence du processus.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    if [ `ps -ef | grep apache | grpe -v grep | wc -l` != 0 ]; then
     #déjà démarrer ne rien faire
    else
    .....
    fi
    Comité de lutte contre le langage SMS sur les forums
    Veuillez écrire dans un langage compréhensible par les humains, merci.

  9. #9
    Nouveau membre du Club
    Inscrit en
    Janvier 2005
    Messages
    62
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 62
    Points : 39
    Points
    39
    Par défaut
    OKI
    Merci beaucoup bster je vais tenter ça sinon vu que les erreurs peuvent être autres (apache n'arrive pas à se lancer ou autre) du coup au lieu de faire un exit j'ai fait un killall -9 mon prog
    Oki c bourrin ... mais bon ça marche ...

    @pluche

  10. #10
    Nouveau membre du Club
    Inscrit en
    Janvier 2005
    Messages
    62
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 62
    Points : 39
    Points
    39
    Par défaut
    Je viens de tester ton code ça marche nickel

    Encore merci bster

  11. #11
    Membre confirmé
    Avatar de bster
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    372
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mai 2005
    Messages : 372
    Points : 497
    Points
    497
    Par défaut
    de rien...

    c'est en assayant qu'on progresse
    Comité de lutte contre le langage SMS sur les forums
    Veuillez écrire dans un langage compréhensible par les humains, merci.

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

Discussions similaires

  1. Requête POST dans un script bash
    Par desperado dans le forum Linux
    Réponses: 4
    Dernier message: 11/12/2007, 22h38
  2. Réponses: 5
    Dernier message: 18/10/2005, 09h49
  3. Réponses: 21
    Dernier message: 29/09/2005, 19h33
  4. Script bash : Pb avec sed
    Par fred64 dans le forum Linux
    Réponses: 3
    Dernier message: 19/08/2005, 11h24
  5. Scripts bash : requêtes sql
    Par milka dans le forum Linux
    Réponses: 3
    Dernier message: 17/08/2005, 10h59

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