Changement d'occurrences dans un fichier .netrc sous aix.

richy -  
mamiemando Messages postés 33174 Date d'inscription   Statut Modérateur Dernière intervention   -

Bonjour,

Par soucis de reprise d'activité de la production sur mon site backup distant, dont le nom de la machine "PROD_DB_VIR"  et  le nom de l'utilisateur "login" et le mot de passe "password" de l'utilisateur d'accès à la base de donnée à partir de l'application de la communauté utilisateurs de l'entreprise change sur le site backup sur le fichier "/home/$USER/.netrc" selon le profile du USER.

Je cherche un script sous aix comportant une commande avec 'sed' ou 'awk' qui me permet d'effectuer ces changement des occurrences sur le même fichier  "/home/$USER/.netrc" d'une façon transparente en lançant le script lors du basculement vers le site backup.

#### voici le fichier "vi  /home/$USER/.netrc"  :

machine PROD_DB_VIR login admdb password admdb@2023
~
~
~

 

Merci d'avance.

5 réponses

  1. mamiemando Messages postés 33174 Date d'inscription   Statut Modérateur Dernière intervention   7 944
     

    Bonjour,

    Je n'ai pas compris ton problème ni ta question. Peux-tu réécrire ton message avec des phrases plus courtes et plus claires ? Quelles occurrences veux-tu modifier avec sed et awk ? Peux-tu donner un exemple en montrant à quoi ça rassemblerait avant et après changement ?

    Si j'ai bien compris tu veux modifier

    machine PROD_DB_VIR login admdb password admdb@2023

    en :

    machine PROD_DB_VIR login mon_login password mon_mot_de_passe

    Si oui :

    sed -i "s/password [^ ]*/password my_password/" ~/.netrc
    sed -i "s/login [^ ]*/login my_login/" ~/.netrc

    Bonne chance

    0
  2. richy
     

    bonjour 

    Merci pour votre réponse.

    Finalement je veux modifier juste le nom de la machine dans le fichier .netrc de mes utilisateurs /home/$USER/.netrc: avec un script sous aix avec sed ou awk

    Origine site Production: 

    machine PROD_DB_VIR login admdb password admdb@2023

    besoin site Backup:

    machine BACK_DB_VIR login admdb password admdb@2023

    Merci d'avance.

    0
  3. mamiemando Messages postés 33174 Date d'inscription   Statut Modérateur Dernière intervention   7 944
     

    Bonjour,

    Merci pour ces précisions. Dans ce cas, il te suffit de repartir des commandes que je t'ai déjà données :

    sed -i "s/PROD_DB_VIR/BACK_DB_VIR/" ~/.netrc

    Ceci modifie le .netrc de l'utilisateur courant.

    Si tu veux itérer sur les .netrc de plusieurs utilisateurs dont le dossier est dans /home, écris une boucle for.

    for f in $(find /home -maxdepth 2 -type f | grep /.netrc$); do
      sed -i 's/PROD_DB_VIR/BACK_DB_VIR/g' "$f"
    done

    Pour rappel tu peux aussi trouver les dossiers personnels de chaque utilisateur local dans /etc/passwd.

    Bonne chance

    0
  4. richy
     

    Re-bonjour,

    l'exécution du script me renvoi l'erreur suivante :

    find: 0652-017 -maxdepth is not a valid option.

    merci ! 

    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. mamiemando Messages postés 33174 Date d'inscription   Statut Modérateur Dernière intervention   7 944
     

    Bonjour,

    Commence par t'assurer que chaque bout de commande impliqué retourne ce qu'il faut :

    find /home -maxdepth 2 -type f
    find /home -maxdepth 2 -type f | grep /.netrc$

    Si tu n'es pas sous bash, c'est peut-être dû à l'opérateur $( ... ) qu'on peut remplacer par `...` :

    for f in `find /home -maxdepth 2 -type f | grep /.netrc$`; do
      sed -i 's/PROD_DB_VIR/BACK_DB_VIR/g' "$f"
    done

    Bonne chance

    0