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 :

Faire un script menu en ksh


Sujet :

Shell et commandes GNU

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    operateur
    Inscrit en
    Octobre 2014
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : operateur

    Informations forums :
    Inscription : Octobre 2014
    Messages : 10
    Points : 1
    Points
    1
    Par défaut Faire un script menu en ksh
    Bonjour

    Je débute en programmation shell et j'aimerais faire un menu me permettant d'automatiser certaines tâches.
    Je souhaiterais rechercher si un répertoire est créé à la date jour J dans un chemin pour ensuite lui assigner une commande .
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    case "$reponse" in
          1) echo "Renseignez la date du jour YYYYMMDD"
    	     # Vérifiez si le dossier existe "work_date" dans le repertoire /opt/a2001/common/data/databank/
    		 read $date
    		  if  [ -d work_$date ] echo "Le fichier existe."
     
                                 then
    		 [ -d work_$date ] || echo "Le fichier n'existe pas "
     
                                 fi
                            do
                         #Appliquer la commande grep  a ce repertoire opt/a2001/common/data/databank/work_date/results/bank_5411_1$ en remplacant YYY-MM- par l'année et le mois des données traitées par la banque de données (en général c'est le mois -1)      
                         #grep YYYY-MM- 5411_1_01.DB_DS_CRLF | awk '{print $1}' | grep -v 00001 | grep -v 00003 | sort | uniq
    Est ce que quelqu'un pourrait m'aider, je sais pas du tout comment vérifier si une directorie est crée (exemple : work_20141101) ,en tapant la date du jour, encore moins appliquer une commande après avoir reçu le résultat
    Malgré les cours sur internet je n'y arrive pas.

    Merci d'avance

  2. #2
    Expert éminent sénior Avatar de frp31
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Juillet 2006
    Messages
    5 196
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juillet 2006
    Messages : 5 196
    Points : 12 264
    Points
    12 264
    Par défaut
    déjà tu as compris l'essentiel manifestement.

    en utilisant un case ..... 1) ..... ;;

    pour ton grep : suffira à la limite un -il en option selon ce que tu veux récuperer.

    ta seconde valeur date -1 moi (avec la precaussion du janvier qui passe a descembre et donc à l'année -1) c'est à toi de la calculer...
    dans ton script sinon celui ci ne sera pas portable à d'autres machines à l'avenir
    l'idée est donc de découper avec cut ta date dans la première variable de faire moi=moi-1 et surtout si moi=zero alors moi=12 et année=année-1
    tu réassemble le tout donc YYYY-MM si j'ai bien vu...dans ta $vardatemoins1mois

    et tu peux alors passer à la commande :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    /opt/a2001/common/data/databank/work_date/results/bank_5411_1$vardatemoins1mois

  3. #3
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 631
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 631
    Points : 30 865
    Points
    30 865
    Billets dans le blog
    1
    Par défaut
    Bonjour

    Je crois que le select existe en ksh...
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  4. #4
    Expert confirmé
    Homme Profil pro
    Développeur informatique en retraite
    Inscrit en
    Avril 2008
    Messages
    2 101
    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 101
    Points : 5 849
    Points
    5 849
    Par défaut
    Citation Envoyé par zdral Voir le message
    Bonjour

    Je débute en programmation shell et j'aimerais faire un menu me permettant d'automatiser certaines tâches.
    Je confirme: voir l'instruction "select".

    Sinon:

    Je souhaiterais rechercher si un répertoire est créé à la date jour J dans un chemin pour ensuite lui assigner une commande .
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    case "$reponse" in
        1) echo "Renseignez la date du jour YYYYMMDD"
           # Vérifier si le dossier existe "work_date" dans le repertoire /opt/a2001/common/data/databank/
           read $date
           if  test -d work_$date
           then
               echo "Le dir 'work_$date' existe."
               #Appliquer la commande grep  a ce repertoire opt/a2001/common/data/databank/work_date/results/bank_5411_1$ en remplacant YYY-MM- par l'année et le mois des données traitées par la banque de données (en général c'est le mois -1)
               #grep YYYY-MM- 5411_1_01.DB_DS_CRLF | awk '{print $1}' | grep -v 00001 | grep -v 00003 | sort | uniq
           else
               echo "Le dir 'work_$date' n'existe pas "
           fi
           ;;
    esac

  5. #5
    Nouveau Candidat au Club
    Homme Profil pro
    operateur
    Inscrit en
    Octobre 2014
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : operateur

    Informations forums :
    Inscription : Octobre 2014
    Messages : 10
    Points : 1
    Points
    1
    Par défaut
    Bonjour a tous,

    Merci pour vos réponse , mais je n'arrive toujours pas a faire fonctionner ce script .
    Malgrés le code de jack-ft j'ai comme résultat " Le dir 'work_' n'existe pas alors je sais pas si le test du directory ce fait bien..
    Et je ne sais pas comment me servir de la commande select non plus ..

    En ce qui concerne grep $var fichier : ou puis je mettre dans ce code??

    J'ai aussi penser a mettre un find pour trouver le directory crée :
    comme ceci

    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
     
    1) echo "Rensegnez la date du jour YYYY,MM et DD"
     
    			 #Verifiez si le dossier "work_datejourJ" existe dans le repertoire /opt/a2001/common/data/databank/
     
    			 read $date
                 if find /opt/a2001/common/data/databank -name "work_YYYYMMDD" -type d -print
    			 then
    			     echo "Le dir 'work_$date' existe."
     
                 if [ -f work_20141001 ]
                    then echo "le fichier existe"
                 else
    			     echo "Le dir 'work_$date' n'existe pas "
                 fi
    Est ce que ça peut marcher ??

    Je vais me documenter un peu plus et essayer de passer plus de temps sur le sujet mais j'ai tendance a baisser les bars ..
    Merci a vous

  6. #6
    Expert confirmé
    Homme Profil pro
    Développeur informatique en retraite
    Inscrit en
    Avril 2008
    Messages
    2 101
    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 101
    Points : 5 849
    Points
    5 849
    Par défaut
    Citation Envoyé par zdral Voir le message
    Malgrés le code de jack-ft j'ai comme résultat " Le dir 'work_' n'existe pas alors je sais pas si le test du directory ce fait bien..
    Pour tester l'existence du répertoire "work_$date" dans le répertoire courant, il suffit de faire:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
           if  test -d work_$date
           then
               echo "Le dir 'work_$date' existe."
               #Appliquer la commande grep  a ce repertoire opt/a2001/common/data/databank/work_date/results/bank_5411_1$ en remplacant YYY-MM- par l'année et le mois des données traitées par la banque de données (en général c'est le mois -1)
               #grep YYYY-MM- 5411_1_01.DB_DS_CRLF | awk '{print $1}' | grep -v 00001 | grep -v 00003 | sort | uniq
           else
               echo "Le dir 'work_$date' n'existe pas "
           fi
    mais, pour tester l'existence du répertoire "work_$date" dans le répertoire "/opt/a2001/common/data/databank/", il suffit de tester l'existence du répertoire "/opt/a2001/common/data/databank/work_$date" dans l'absolu (c'est la base de la base du système de répertoires d'unix!)

    Cela devrait te débloquer (à partir de ma proposition).

    En ce qui concerne le "grep", l'endroit où le mettre est dans la clause "then" du "if" qui teste l'existence du répertoire, c'est-à-dire à l'endroit où je l'ai mis dans ma proposition (en décommentant le code et ajustant le nom du fichier).

  7. #7
    Nouveau Candidat au Club
    Homme Profil pro
    operateur
    Inscrit en
    Octobre 2014
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : operateur

    Informations forums :
    Inscription : Octobre 2014
    Messages : 10
    Points : 1
    Points
    1
    Par défaut
    J'ai tester :

    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
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
     
    while :
    do
     
       echo "- 1 - traiter le bon 5411 "
       echo "- 2 - Restauration "
       echo "- 3 - Fin"
     
       read reponse?"Votre choix: "
     
       case "$reponse" in
          1) echo "Rensegnez la date du jour YYYY,MM et DD"
                 #Verifiez si le dossier  existe "work_datejourJ" existe dans le repertoire /opt/a2001/common/data/databank
     
                 read $date
                 if [ -d /opt/a2001/common/data/databank/work_$date ]                                                                                                                                             
                 then
                    echo "Le dir 'work_$date' existe "
     
                 else
                    echo "Le dir 'work_$date' n'existe pas"
     
                 fi
     
                 ;;
          2) echo " Vous avez choisi la restauration"
                 # lancement de la restauration
                 read x
                 ;;
          3) echo "Fin du traitement"
                 echo "A bientot ..."
                 exit 0
                 ;;
              *) echo "saisie incorrecte"
                 read x
                 ;;
        esac
     
    done
    ça ne marche tjr pas ça me répond que le fichier n'existe pas peut importe ce que je rentre comme date et même si le folder existe ..

  8. #8
    Nouveau Candidat au Club
    Homme Profil pro
    operateur
    Inscrit en
    Octobre 2014
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : operateur

    Informations forums :
    Inscription : Octobre 2014
    Messages : 10
    Points : 1
    Points
    1
    Par défaut
    Citation Envoyé par zdral Voir le message
    J'ai tester :

    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
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
     
    while :
    do
     
       echo "- 1 - traiter le bon 5411 "
       echo "- 2 - Restauration "
       echo "- 3 - Fin"
     
       read reponse?"Votre choix: "
     
       case "$reponse" in
          1) echo "Rensegnez la date du jour YYYY,MM et DD"
                 #Verifiez si le dossier  existe "work_datejourJ" existe dans le repertoire /opt/a2001/common/data/databank
     
                 read $date
                 if [ -d /opt/a2001/common/data/databank/work_$date ]                                                                                                                                             
                 then
                    echo "Le dir 'work_$date' existe "
     
                 else
                    echo "Le dir 'work_$date' n'existe pas"
     
                 fi
     
                 ;;
          2) echo " Vous avez choisi la restauration"
                 # lancement de la restauration
                 read x
                 ;;
          3) echo "Fin du traitement"
                 echo "A bientot ..."
                 exit 0
                 ;;
              *) echo "saisie incorrecte"
                 read x
                 ;;
        esac
     
    done
    ça ne marche tjr pas ça me répond que le fichier n'existe pas peut importe ce que je rentre comme date et même si le folder existe ..
    LOL je suis vraiment nul ! ça ne fonctionner pas car j'avais mis "$date " j'ai enlever le $ et c'ets bon !! dur dur le dev serieux...
    Je vais passer au grep et sa va pas être de la tarte aussi ..

  9. #9
    Expert confirmé
    Homme Profil pro
    Développeur informatique en retraite
    Inscrit en
    Avril 2008
    Messages
    2 101
    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 101
    Points : 5 849
    Points
    5 849
    Par défaut
    Citation Envoyé par zdral Voir le message
    LOL je suis vraiment nul !
    Tu n'es pas nul! Tu as juste fait une erreur!
    Et c'est pas interdit! (ça permet juste de mieux apprendre!)

    ça ne fonctionner pas car j'avais mis "$date " j'ai enlever le $ et c'ets bon !!
    j'avais pas vu non plus!
    Mais le message d'erreur, si tu avais pris soin de nous le donner, aurait pu te/nous mettre la puce à l'oreille!

    ps: ça ne fonctionnait pas...

    dur dur le dev serieux...
    C'est sensible, ces petites bêtes-là!

    Je vais passer au grep et sa va pas être de la tarte aussi ..
    T'inquiète! T'auras du soutien!

  10. #10
    Nouveau Candidat au Club
    Homme Profil pro
    operateur
    Inscrit en
    Octobre 2014
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : operateur

    Informations forums :
    Inscription : Octobre 2014
    Messages : 10
    Points : 1
    Points
    1
    Par défaut Commande grep appliquée à un dossier
    Je vous avoue être un peu désemparé pour la suite de mon code et ne sais pas par quel chemin passer.
    L'étape 2 de mon script doit :
    -faire un grep sur le répertoire donnée en $date et vérifié cad ( je verifie que l'existence du repertoire work_20141101) OK puis je me place dans ces sous parties cad (opt/a2001/common/data/databank/work_20141101/results/bank_5411_1) et la je fais mon grep en remplaçant YYYY-MM par le moi de données -1 donc 20141001)

    en code
    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
     
     1) echo "Rensegnez la date du jour YYYY,MM et DD"
                 #Verifiez si le dossier  existe "work_datejourJ" existe dans le repertoire /opt/a2001/common/data/databank
     
                 read date
                 if [ -d "/opt/a2001/common/data/databank/work_$date" ];                                                                                                                                           
                 then
                    echo "Le dir 'work_$date' existe "
                    cd /opt/a2001/common/data/databank/work_$date/results/bank_5411_1
    				read YYYY-MM
    				then grep YYYY-MM- 5411_1_01.DB_DS_CRLF | awk '{print $1}' | grep -v 00001 | grep -v 00003 | sort | uniq
    				;
                 else
                         "le dir 'work_$date' n'existe pas "
     
                 fi
     
                #Appliquer la commande grep  a ce repertoire opt/a2001/common/data/databank/work_date/results/bank_5411_1$ en remplacant YYY-MM- par l'annéet le mois des donné traité par la banque de donné (éral c'est le mois -1)
               #grep YYYY-MM- 5411_1_01.DB_DS_CRLF | awk '{print $1}' | grep -v 00001 | grep -v 00003 | sort | uniq
    Si j'enleve le read YYYY-MM ça marche en remplaçant par grep 2014-10- 5411_1_01.DB_DS_CRLF | awk '{print $1}' | grep -v 00001 | grep -v 00003 | sort | uniq
    Par contre je ne sais pas comment mettre ma variable moi -1 (YYYY-MM) et afficher le resultat du grep

    QQ1 aurait il une idée comment faire ça proprement ?? merci d'avance pour votre aide .

  11. #11
    Expert confirmé
    Homme Profil pro
    Développeur informatique en retraite
    Inscrit en
    Avril 2008
    Messages
    2 101
    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 101
    Points : 5 849
    Points
    5 849
    Par défaut
    Pas trop le temps d'élaborer...
    Pour faciliter notre lecture de ton code, essaie de l'indenter correctement (par exemple, en remplaçant les tabulations par des espaces).
    Nous ne pouvons travailler que sur le code que tu fournis ici, et non sur les divers essais que tu n'envoies pas.
    J'ai du mal à croire que le code fourni puisse marcher (j'avoue que je ne l'ai pas testé) car il contient un "then" superfétatoire (mais c'est peut-être juste une erreur de copier/coller vers le forum).

    Pour calculer automatiquement la date du mois précédent, il faut des spécifications précises
    Il ne faut pas louper les changements d'année (2014-01-01 => 2013-12)
    Quid de 2014-03-31?

    Si tu demandes la saisie de la date (du mois précédent) à chercher, c'est plus simple:
    Tu peux remplacer
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
                 if [ -d "/opt/a2001/common/data/databank/work_$date" ];                                                                                                                                           
                 then
                    echo "Le dir 'work_$date' existe "
                    cd /opt/a2001/common/data/databank/work_$date/results/bank_5411_1
    				read YYYY-MM
    				then grep YYYY-MM- 5411_1_01.DB_DS_CRLF | awk '{print $1}' | grep -v 00001 | grep -v 00003 | sort | uniq
    				;
                 else
                         "le dir 'work_$date' n'existe pas "
     
                 fi
    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
                 if [ ! -d "/opt/a2001/common/data/databank/work_$date" ];
                 then
                    echo "le dir 'work_$date' n'existe pas "
                 else
                    echo "Le dir 'work_$date' existe "
                    cd /opt/a2001/common/data/databank/work_$date/results/bank_5411_1
                    read YYYY_MM
                    fgrep "${YYYY_MM}-" 5411_1_01.DB_DS_CRLF | awk '{print $1}' | egrep -v '0000[13]' | sort -u
                 fi

  12. #12
    Nouveau Candidat au Club
    Homme Profil pro
    operateur
    Inscrit en
    Octobre 2014
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : operateur

    Informations forums :
    Inscription : Octobre 2014
    Messages : 10
    Points : 1
    Points
    1
    Par défaut
    Super , merci pour ta réponse jack-ft et ton aide surtout
    grâce a ça fonctionne par contre j'ai conserver mon grep de base voila ce que mon code donne
    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
     
    1) echo "Rensegnez la date du jour ou le bon a ete genere YYYY,MM et DD"
                 #Verifiez si le dossier  existe "work_datejourJ" existe dans le repertoire /opt/a2001/common/data/databank
     
                 read date
                 if [ -d "/opt/a2001/common/data/databank/work_$date" ];                                                                                                                                          
                 then
                    echo "Le dir 'work_$date' existe  "
                    cd /opt/a2001/common/data/databank/work_$date/results/bank_5411_1
                    echo " Rensegnez  le mois -1 "
                    read YYYY_MM
                    grep "${YYYY_MM}-" 5411_1_01.DB_DS_CRLF | awk '{print $1}' | grep -v 00001 | grep -v 00003 | sort | uniq
                 else
                    echo "Le dir 'work_$date' n'existe pas"
     
                 fi
    et son résultat :

    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
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
     
    /script/menu$ menu.sh
    - 1 - Traiter le bon de test 5411
    - 2 - Lancement du grep
    - 3 - Fin
    Votre choix: 1
    Rensegnez la date du jour ou le bon a ete genere YYYY,MM et DD
    20140902
    Le dir 'work_20140902' existe
     Rensegnez  le mois -1
    2014-08
    2014-08-01
    2014-08-02
    2014-08-03
    2014-08-04
    2014-08-05
    2014-08-06
    2014-08-07
    2014-08-08
    2014-08-09
    2014-08-10
    2014-08-11
    2014-08-12
    2014-08-13
    2014-08-14
    2014-08-15
    2014-08-16
    2014-08-17
    2014-08-18
    2014-08-19
    2014-08-20
    2014-08-21
    2014-08-22
    2014-08-23
    2014-08-24
    2014-08-25
    2014-08-26
    2014-08-27
    2014-08-28
    2014-08-29
    2014-08-30
    2014-08-31
    - 1 - Traiter le bon de test 5411
    - 2 - Lancement du grep
    - 3 - Fin
    Votre choix:
    Je doit faire pas mal d'effort pour présenter ça mieux c'est sûr.

  13. #13
    Expert confirmé
    Homme Profil pro
    Développeur informatique en retraite
    Inscrit en
    Avril 2008
    Messages
    2 101
    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 101
    Points : 5 849
    Points
    5 849
    Par défaut
    Citation Envoyé par zdral Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Rensegnez la date du jour ou le bon a ete genere YYYY,MM et DD
     Rensegnez  le mois -1
    Je doit faire pas mal d'effort pour présenter ça mieux c'est sûr.
    Par exemple, tu pourrais peut-être te renseigner sur l'orthographe du mot "renseigner"

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 238
    Points : 13 443
    Points
    13 443
    Par défaut
    Citation Envoyé par jack-ft Voir le message
    Par exemple, tu pourrais peut-être te renseigner sur l'orthographe du mot "renseigner"
    Mais non, tu vois bien qu'il ne met pas les accents.
    Cette réponse vous apporte quelque chose ? Cliquez sur en bas à droite du message.

  15. #15
    Nouveau Candidat au Club
    Homme Profil pro
    operateur
    Inscrit en
    Octobre 2014
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : operateur

    Informations forums :
    Inscription : Octobre 2014
    Messages : 10
    Points : 1
    Points
    1
    Par défaut
    Par exemple, tu pourrais peut-être te renseigner sur l'orthographe du mot "renseigner"
    Lol ça va l'orthographe c'est secondaire ^^j'écris vite en fait sans faire gaffe ,ça cherche la petite bête au lieu de m'aider à coder ,c'est pas du joli tout ça ^^
    Ma première partie est finie Ourrahhh

    Maintenant je passe à mon 2 du menu qui consiste à faire un "less" d'un fichier de log et de déterminer si dans ce log il y a des "erreurs" ou "warning" ou "oracle"
    Donc :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    2) echo " Vérifier les logs de SOP et de DBK_CT ainsi que les fichiers produits "
                 # cluster sop log argosSop-debug.log | grep -E 'WAR|ERR|ORA'
                 cluster sop log argosSop-debug.log | grep -E 'WAR|ERR|ORA'
                 if résultat = 0 erreurs 
                 echo OK
                 then
                     echo "Si une erreur est détectée, ne pas continuer la bdd et le signaler à l'IE. Attention, si la bdd a tourné sur 2 jours, il faut vérifier les deux fichiers de log."

    une idée pour cette commande ??
    Merci

  16. #16
    Nouveau Candidat au Club
    Homme Profil pro
    operateur
    Inscrit en
    Octobre 2014
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : operateur

    Informations forums :
    Inscription : Octobre 2014
    Messages : 10
    Points : 1
    Points
    1
    Par défaut
    J'ai coder ça qui marche pas pour l'instant

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    2) echo "Verifier les logs de SOP et de DBK_CT ainsi que les fichiers produits"
                 # cluster sop log argosSop-debug.log | grep -E 'WAR|ERR|ORA'
                  if  cluster sop log argosSop-debug.log | grep -E 'WAR|ERR|ORA'
                  then
                      echo $?
                      echo "une erreur est detecte ,ne pas continuer la bdd et le signaler a l IE. Attention, si la bdd a tourner sur 2 jours, il faut verifier les deux fichiers de log"
                  else
                      echo "aucune erreur detecte"
                  fi
    En espérant que la cmd grep m'affiche les lignes en début de phrase avec WAR et/ou ERR , ORA si erreurs détecté

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 238
    Points : 13 443
    Points
    13 443
    Par défaut
    Citation Envoyé par zdral Voir le message
    En espérant que la cmd grep m'affiche les lignes en début de phrase avec WAR et/ou ERR , ORA si erreurs détecté
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    grep -E '^(WAR|ERR|ORA)'
    ou
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    grep '^\(WAR\|ERR\|ORA\)'
    Cette réponse vous apporte quelque chose ? Cliquez sur en bas à droite du message.

  18. #18
    Nouveau Candidat au Club
    Homme Profil pro
    operateur
    Inscrit en
    Octobre 2014
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : operateur

    Informations forums :
    Inscription : Octobre 2014
    Messages : 10
    Points : 1
    Points
    1
    Par défaut
    Merci pour ta réponse Flodelarab

  19. #19
    Nouveau Candidat au Club
    Homme Profil pro
    operateur
    Inscrit en
    Octobre 2014
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : operateur

    Informations forums :
    Inscription : Octobre 2014
    Messages : 10
    Points : 1
    Points
    1
    Par défaut 3éme partie de mon script traitement banque de données
    Bonjour @ tous,

    Pour ma 3ème partie je souhaiterais passer en paramètre 2 dates a un script éxecutable :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    opt/a2001/common/script/tool/check_bdtd_databank_validity.sh 02/08/2011 201107
    Avec :

    Première date : jour du lancement de la banque de données (JJ/MM/AAAA). Exemple : saisir 02/08/2011 pour une banque de données lancée le 02/08/2011
    Deuxième date : Mois des données de la banque de données (AAAAMM)

    J’espère être assez clair, j'ai commencer a coder ça mais pas sûr que ça fonctionne :/

    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
    3) echo "Veuillez passer en parametre La date du jour de lancement (JJ/MM/AAAA) puis Moi de donnees -1"
                 #echo "Saisir le jour du traitement de la banque de donnees (ex : 01/07/2011 pour une databank lancee le 01/07/2011)"
                 #read date
                 #date="01/07/2011"
                 date=$1
                 day=`echo $date | cut -d/ -f1`
                 month=`echo $date | cut -d/ -f2`
                 year=`echo $date | cut -d/ -f3`
     
                 #echo "Saisir le mois des donnees (Ex: 201106)"
                 #read dateData
                 #dateData="201106"
                 dateData=$2
                 #$1 date lancement banque de donnees
     
                 /opt/a2001/common/script/tool/check_bdtd_databank_validity.sh $1 $2
                 ;;
    Vous en pensez quoi ? j'ai recopié sur le script check_bdtd_databank_validity.sh ,je voudrais sur mon menu partie 4 juste taper datejourJ(01/07/2011) espace mois-1(201106).

  20. #20
    Expert confirmé
    Homme Profil pro
    Développeur informatique en retraite
    Inscrit en
    Avril 2008
    Messages
    2 101
    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 101
    Points : 5 849
    Points
    5 849
    Par défaut
    Citation Envoyé par zdral Voir le message
    Vous en pensez quoi ?
    Pense à mettre toutes tes variables entre guillemets (sauf si tu sais pourquoi ne pas le faire...)

    Tu mets $1 et $2 dans des variables que tu n'utilises pas... Bizarre...

    Essaie de remplacer la ligne:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
                 /opt/a2001/common/script/tool/check_bdtd_databank_validity.sh $1 $2
    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
                 echo /opt/a2001/common/script/tool/check_bdtd_databank_validity.sh "$1" "$2"
    et regarde ce que ça produit.

    Si le résultat te convient, supprime le "echo".

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

Discussions similaires

  1. Faire un petit menu en ksh
    Par laurentze dans le forum Shell et commandes GNU
    Réponses: 3
    Dernier message: 21/07/2010, 10h53
  2. Besoin d'aide pour faire un script
    Par shinux2004 dans le forum Langage
    Réponses: 4
    Dernier message: 16/07/2005, 17h44
  3. Faire apparaitre le menu général
    Par Terminator dans le forum IHM
    Réponses: 10
    Dernier message: 11/12/2004, 18h03
  4. faire un petit menu qui lance des processus
    Par tomsoyer dans le forum Linux
    Réponses: 4
    Dernier message: 30/11/2004, 19h37
  5. quel langage choisir pour faire de script sous windows
    Par pas05 dans le forum Langages de programmation
    Réponses: 7
    Dernier message: 18/11/2002, 23h42

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