Forum Programmation.shell Script KSH avec fichier de configuration externe

Posté par  .
Étiquettes : aucune
0
21
oct.
2009
Bonjour,

Je dois écrire un script qui sera déployé sur plusieurs environnement différent avec des valeurs de connexions aux base de données qui varies selon les environnements.

J'ai fait un fichier de configuration externe appelé "paramètres.conf" qui contient les variables susceptibles de changer entre les environnements.
CHAINE_CONNEXION=valeur1/valeur2
DATA_BASE=dbName

Dans mon script j'aimerai faire un appel a ce fichier de configuration qui sera définit une fois pour toute dans chacun des environnements, et utiliser les variables comme si elle était définit dans le script lui même par :
$CHAINE_CONNEXION et $DATA_BASE

Comment puis je faire pour appeler dans mon script mon fichier de configuration ?

Si cela n'est pas possible y a t-il des solutions de contournement ?

Le but de la manœuvre est de ne pas avoir à changer les valeurs des variables de connexion aux base de données contenues dans le script lors qu'on le passera de l'environnement de DEV a celui de PROD par exemple.

Merci de votre lecture.

Cordialement,

Francois
  • # source le_fichier en bash

    Posté par  (site web personnel) . Évalué à 2.

    . /le_fichier

    Probablement de la même manière

    Système - Réseau - Sécurité Open Source - Ouvert à de nouvelles opportunités

    • [^] # Re: source le_fichier en bash

      Posté par  . Évalué à 1.

      Merci pour ta réponse,

      Cependant j'ai comme un problème pour utiliser :
      source le_fichier.conf ou ./le_fichier.conf

      dans le_fichier.conf j'ai :
      CHAINE_CONNEXION=valeur1/valeur2

      dans mon script :
      source le_fichier.conf
      echo $CHAINE_CONNEXION # marche pas
      echo $$CHAINE_CONNEXION # marche mais j'ai des numeros


      j'obtiens lors de l'execution :
      [ligne vide]
      36044valeur1/valeur2


      ce qui fait que la connexion a la base de données ne marche pas puisque j'éssais de me connecter avec 36044valeur1/valeur2 au lieu de valeur1/valeur2

      Comment faire pour récupérer valeur1/valeur2 sans les numéro qui précèdent ?

      Merci

      Cordialement,
      Francois
      • [^] # Re: source le_fichier en bash

        Posté par  (site web personnel) . Évalué à 1.

        Il y a un espace entre le "point" et le fichier à inclure

        Système - Réseau - Sécurité Open Source - Ouvert à de nouvelles opportunités

        • [^] # Re: source le_fichier en bash

          Posté par  . Évalué à 2.

          et aussi, ça serait bien de rajouter des export devant toutes les affectations de variable d'environnement
          • [^] # Re: source le_fichier en bash

            Posté par  . Évalué à 1.

            Je viens de comprendre ta solution.
            En fait . le_fichier.conf permet d'exécuter le fichier le_fichier.conf dans lequel j'ai déclaré des variables d'environnements par export CHAINE_CONNEXION=valeur1/valeur2

            Seulement ma question initiale été d'inclure le fichier conf a l'intérieur du script un peut comme en php avec include.

            C'est pas possible de faire comme en php un genre de include le_fichier.conf ?

            Juste une question par rapport a ta solution, si je définit une variable d'environnement qui s'appèle TOTO. Si un autre script utilise le même nom de variable TOTO et réassigne une valeur a toto est ce que cela changera la valeur contenu dans ma variable d'environnement ?

            En gros n'y a t-il pas un risque de débordement de variable entre différents scripts ?

            Merci

            Cordialement,
            Francois
            • [^] # Re: source le_fichier en bash

              Posté par  . Évalué à 2.

              dans ton fichier_de_conf.conf
              export CHAINE_CONNEXION=valeur1/valeur2

              dans ton script
              . /chemin/vers/ton/fichier_de_conf.conf

              echo $CHAINE_CONNEXION


              ou bien (selon les shells)

              source /chemin/vers/ton/fichier_de_conf.conf

              echo $CHAINE_CONNEXION
              • [^] # Re: source le_fichier en bash

                Posté par  . Évalué à 1.

                J'ai bien compris et cela marche mais cette méthode est en réalité un moyen de définir des variable d'environnement.

                Francois
                • [^] # Re: source le_fichier en bash

                  Posté par  . Évalué à 1.

                  J'ai bien compris et cela marche mais cette méthode est en réalité un moyen de définir des variable d'environnement.

                  en shell, toute variable est variable d'environnement.*

                  *avec quelques exceptions près, genre en bash ou tu peux definir des variables locales à une fonction par exemple.
                  • [^] # Re: source le_fichier en bash

                    Posté par  . Évalué à 2.

                    Non, seules les variables "exportées" (avec le mot clé "export") sont des variables d'environnement, c'est à dire des variables que les processus fils récupèrent. Typiquement la variable PATH par exemple.

                    Certe en shell, les variables d'environnements (des processus pères) sont utilisées pour créer les variables shell correspondantes.

                    Tu dois confondre avec des variables globales. Les variables en shell sont des variables globales, sinon.
      • [^] # Re: source le_fichier en bash

        Posté par  (site web personnel) . Évalué à 2.

        >Comment faire pour récupérer valeur1/valeur2 sans les numéro qui
        >précèdent ?

        Les numéros, c'est parce que $$ veut dire pid du processus courant.

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.