Activation script a la demande

Bonjour,
A travers une grille de saisie j'aurai besoin d'activer des traitements à la demande. Le test sera fait à partir d’un script lanceur qui contient les lancements de script quotidien et à la demande suivant la saisie à travers de la grille.

Le Lanceur:
#!/bin/ksh

####Debut du script Lanceur

Script_quotid1 #mon script de tous les jours à activer
Script_quotid2 #mon script de tous les jours à activer

if [ dem1 != 0 ]
then
echo 'Pas de planification du script demande1'
else
echo 'Il y a planification de la demande1'
fi
if [ dem2 != 0 ]
then
echo 'Pas de planification du script demande2'
else
echo 'Il y a planification de la demande2'
fi

Script_quotid3 #mon script de tous les jours à activer

####Fin du script Lanceur

Format de ma grille de saisie des demandes de travaux:

******************Grilles de siasie des demandes de travaux**************************
*****************Pour valider une demande de travaux saisir 1************************
Planification du script dem1 ===> 0
Planification du script dem2 ===> 0

******************Fin de la grille de saisie*****************************************

Remarque:
Dans la grille implicitement les demandes sont à 0 (non planifier).

Merci d'avance pour votre aide.

9 réponses

  • Votes
  • Date
  • Date décroissante
  1. Ouah c'est complexe je vais essayer de comprendre ton exemple et de m'en inspirer.

    Je te tiens au courant.

    A+ Bonne journée
    1. Modérateur
      Merci pour cette solution.

      A tout hasard je te mets ce que j'avais fait en m'inspirant de l'exemple de checklist de "Xdialog" :
      #!/bin/sh
      DIALOG=dialog
      #DIALOG=Xdialog
      
      $DIALOG --backtitle " \"Demandez le programme\"" \
              --title "Programme à la demande" \
              --checklist "Boîte de dialogue pour lancement de programmes à la demande\n\n
      Choisissez les programmes à démarrer" 0 0 0 \
              "Programme1"  "Sauvegarde" off \
              "Programme2"  "Envoie de mail" off \
              "Programme3"  "Copie des fichiers log" off \
              "Programme4"  "Restauration" off \
              "Programme5"  "Compression" off 2> checklist.tmp.$$
      
      retval=$?
      
      choice=`cat checklist.tmp.$$`
      rm -f checklist.tmp.$$
      case $retval in
        0)
          echo "'$choice' chosen."
          for name in $choice
          do
          echo "Lancement de $name"
          done
          ;;
        1)
          echo "Cancel pressed.";;
        255)
          echo "Box closed.";;
      esac
      ;-))
      1. Merci pour l'info mais je penses avoir trouvé une solution.

        Une petite présentation du script menu:

        #!/bin/ksh
        ####
        plan_dem1()
        {
        echo "il y a une demande de planification du traitement dem1" >>monrep/plan_dem_trvx
        echo "dem1_plan" >monrep/dem1_plan
        }
        deplan_dem1()
        {
        echo "il y a une demande de deplanification du traitement dem1" >>monrep/plan_dem_trvx
        >monrep/dem1_plan
        }
        plan_dem2()
        {
        echo "il y a une demande de planification du traitement dem2" >>monrep/plan_dem_trvx
        echo "dem2_plan" >monrep/dem2_plan
        }
        deplan_dem2()
        {
        echo "il y a une demande de deplanification du traitement dem2" >>monrep/plan_dem_trvx
        >monrep/dem2_plan
        }
        plan_dem3()
        {
        echo "il y a une demande de planification du traitement dem3" >>monrep/plan_dem_trvx
        echo "dem3_plan" >monrep/dem3_plan
        }
        deplan_dem3()
        {
        echo "il y a une demande de deplanification du traitement dem3" >>monrep/plan_dem_trvx
        >monrep/dem3_plan
        }
        menu()
        {
        clear
        choix=0
        while [ ${choix} != f ]
        do
        tput cup 1 25;echo "${sous}Menu de planification des demandes de travaux${rsous} "
        tput cup 3 10;echo "1) Planification dem1"
        tput cup 3 40;echo "2) Deplanification dem1"
        tput cup 4 10;echo "3) Planification dem2"
        tput cup 4 40;echo "4) Deplanification dem2"
        tput cup 5 10;echo "5) Planification dem3"
        tput cup 5 40;echo "6) Deplanification dem3"
        tput cup 18 10;echo "f) Fin"
        tput cup 20 20;echo "Choix :\c";read choix
        if [ ${choix} = f ]
        then
        cat plan_dem_trvx|lp -dlpx
        clear;exit
        fi
        case ${choix} in
        1) plan_dem1;;
        2) deplan_dem1;;
        3) plan_dem2;;
        4) deplan_dem2;;
        5) plan_dem3;;
        6) deplan_dem3;;
        esac
        done
        }
        menu
        ################################

        Un flag et mis dans un fichier pour planifier le traitement
        Un fichier trace de planification et généré et imprimé
        Un demande peut-être déplanifié

        Toutes ces options sont passées par le menu

        Ainsi le script lanceur effectuera une vérification si le traitement et planifié ou pas à partir des fichiers flag.

        Visu du menu:

        Menu de planification des demandes de travaux

        1) Planification Dem1 2) Deplanification Dem1
        3) Planification Dem2 4) Deplanification Dem2
        5) Planification Dem3 6) Deplanification Dem3

        f) Fin

        Choix :

        Merci pour toute l’aide
        Bonne Soirée
        1. Modérateur
          Ok, alors tu devrais regarder du côté de Xdialog (ou dialog si pas de serveur X), et plus particulièrement la fonction "checklist" qui m'a l'air faite pour ce que tu veux...

          ;-))
          1. Non pas possible j'ai trop de script à la demande il me faut vraiment un menu qui à travers me donne tous mes traitements à la demande.
            En faite ce menu sera chargé implicitement à 0 pour tous mes traitements à la demande donc non planifié.
            Pour planifier je n'ai qu'une chose à faire appeler le menu (écrit en shell) et de choisir le traitement à planifier donc de mettre la valeur 1.

            Nouvelle exemple de menu:

            Traitement1 A LA DEMANDE mettre 1 si planifier choix --> 0
            Traitement2 A LA DEMANDE mettre 1 si planifier choix --> 0
            Traitement3 A LA DEMANDE mettre 1 si planifier choix --> 0
            .
            .
            .
            Traitement20 A LA DEMANDE mettre 1 si planifier choix --> 0

            Chaque valeur sera testé dans mon script lanceur (lanc_script).
            1. Modérateur
              Une idée comme ça...

              Programme une tâche quelques minutes avant le lancement de ton autre script qui te demande via la commande "read" et les options qui vont bien, de faire ton choix (0 ou 1</ital ) et envoie le résultat dans un fichier (<ital>echo "$resultat" > /tmp/fichier) avec par exemple un "timeout" (read -t xx) qui en cas de non réponse écrit une réponse par défaut, et depuis ton autre script il te suffit de comparer la valeur du contenu de "/tmp/fichier".

              man bash ou help read pour plus d'explications...

              ;-))
              1. Bonjour,

                Bon je vais essayer de te décrire ma demande.

                Le but :
                J’ai un script qui et lancé par cron à 19h00 ce script au nom de lanc_script contient des lancements de scripts quotidien (Script_quotid1 et Script_quotid2) ou à la demande (dem1 et dem2) .

                Le contenu du lanc_script :
                # !/bin/ksh

                ####Debut du script Lanceur

                Script_quotid1 #mon script de tous les jours à activer
                Script_quotid2 #mon script de tous les jours à activer

                ####Les scripts non quotidien
                ####Si la valeur et différente de 0 il y a exécution du script sinon on ne fait rien

                if [ dem1 != 0 ]
                then
                echo 'La valeur de dem1 et égale à 1 alors il y a traitement '
                ####j’exécute le script dem1
                ./dem1
                else
                echo ‘La valeur et égale à 0 alors il n’y a pas de traitement dem1’
                fi
                if [ dem2 != 0 ]
                then
                echo 'La valeur de dem2 et égale à 1 alors il y a traitement '
                ####j’exécute le script dem2
                ./dem2
                else
                echo ‘La valeur et égale à 0 alors il n’y a pas de traitement dem2’
                fi
                #######Fin de mon script lanc_script

                Le script dem1 et dem2 sont exécutés uniquement si la valeur et différente de 0.
                Je souhaiterai mettre en place un menu ou je trouverai les choix de planification de mes 2 traitements.

                Exemple de menu le menu et activer avant 19h00 pour planifier tous les demandes
                Je lance le script menu_plan qui me renvoi le menu suivant à l’écran :

                ############Planification des demandes de travaux#################
                #########Pour planifier une demande passer la valeur à 1############
                Script dem1 planifier (1) choix :0
                Script dem2 planifier (1) choix :0

                ############Fin du menu des demandes de travaux

                Explication du menu :
                Pour pouvoir exécuter le script dem1 je dois passer la valeur à 1 cette valeur sera testée dans mon script lanc_script .

                Voila j espère être plus clair dans ma demande

                Merci de l'aide
                1. Modérateur
                  Salut,

                  Et que veux-tu exactement ? Moi j'avoue j'ai rien pigé à ton truc ;-\

                  Donc, comme toujours, essayez d'être précis dans vos demandes, avec des exemples et des explications concises, du style "avant => après" ou des commentaires bien imagés et non pas des remarques, et tant qu'à faire, les scripts en entier et non des bribes...

                  Désolé, mais si tu veux une aide, il nous faut davantage de détails ;-(
                  1. Bonjour,
                    Je relance mon appel y a t-il quelqu'un qui à une idée sur la question.

                    Merci beaucoup