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 :

Script modification paramètre fichier de configuration


Sujet :

Shell et commandes GNU

  1. #1
    Membre habitué
    Inscrit en
    Juin 2007
    Messages
    362
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 362
    Points : 141
    Points
    141
    Par défaut Script modification paramètre fichier de configuration
    Bonjour,

    Je cherche à modifier une ligne d'un fichier de configuration.
    Je sais écrire à l'intérieur à la fin du fichier avec echo, mais comment aller à l'endroit désiré d'un seul coup ?
    En gros dé-commenter une ligne pour la modifier.

    merci

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 243
    Points : 13 458
    Points
    13 458
    Par défaut
    Bonjour

    Imaginons que ta ligne soit la seule à contenir l'expression "Configuration perso":
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sed '/Configuration perso/s/\([ \t]*\)#/\1/' fichier.cfg
    Si le résultat te plaît, exécute la même commande avec l'option -i pour modifier le fichier d'origine.
    Cette réponse vous apporte quelque chose ? Cliquez sur en bas à droite du message.

  3. #3
    Membre habitué
    Inscrit en
    Juin 2007
    Messages
    362
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 362
    Points : 141
    Points
    141
    Par défaut
    Bonjour,

    Merci de ta réponse.

    J'ai essayé ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    s='/'
    d='#'
    oldvar="${d}server = http:${s}${s}server.domain.com${s}myAppli${s}plugins${s}MyPlugin${s}"
    var="server = http:${s}${s}xx.xxx.xx.xxx${s}plugins${s}MyPlugin${s}"
    echo /etc/MyPlugin/serverconf.cfg | sed -r -i 's/$oldvar/$var/'
    M'ai j'ai droit à un message d'erreur dans mon Shell : Merci

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 243
    Points : 13 458
    Points
    13 458
    Par défaut
    Bien sûr. Tu demandes de modifier le fichier mais il n'y a pas de fichier. Je te dirais bien d'enlever l'option -i mais il me semble que plusieurs choses sont bizarres:

    • echo affiche un message. Si tu veux afficher le contenu d'un fichier utilise cat.
      Si tu laisses comme ici, il va écrire brutalement "/etc/MyPlugin/serverconf.cfg" et ne va pas trouver ta chaîne à modifier
    • Faire un cat pour le donner à sed est inutile. Donne directement le fichier de configuration à sed comme je l'ai fait.
    • Du coup, si tu fais ça, tu peux garder l'option -i
    • Autant pour les séparateurs dans les noms de fichiers, je peux comprendre qu'on les mette dans une variable car ce n'est pas les mêmes pour windows \ et Linux /. Mais pour les URL, je ne vois pas l'intérêt.
    • Tu veux utiliser des variables mais tu protèges par des simple quotes ' ' qui empêchent l'interprétation de variables. Au minimum, des double quotes " " seraient préférables.
    Cette réponse vous apporte quelque chose ? Cliquez sur en bas à droite du message.

  5. #5
    Membre habitué
    Inscrit en
    Juin 2007
    Messages
    362
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 362
    Points : 141
    Points
    141
    Par défaut
    je ne comprends pas bien cette commande ...

    J'ai essayé ça sinon :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    oldvar="#server = http://server.domain.com/myappli/plugin/myplugin/"
    var="server = http://xx.xxx.xx.xxx/myplugin/"
     
    sed -i 's/$oldvar/$var/' /etc/myplugin/myserverconf.cfg

    Mais ce coup-ci rien ne se passe...

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 243
    Points : 13 458
    Points
    13 458
    Par défaut
    Ben oui. Il faut prendre le temps de lire et comprendre les réponses qu'on se casse le ****** à écrire.

    Ma 5ème remarque disait on-ne-peut-plus clairement que dans des simple quotes, les variables ne sont pas interprétées. $var et $oldvar ne seront jamais remplacées.
    Donc soit tu mets des doubles quotes, soit tu sors des simples quotes pour rentrer dedans après la variable.
    En tenant compte du fait que la bonne pratique demande de mettre ta variable, de toute façon, entre double quotes, pour ne pas en perdre un bout.

    Et je rajoute une 6ème remarque:
    Utilise s@ @ @ plutôt que s/ / /
    Cette réponse vous apporte quelque chose ? Cliquez sur en bas à droite du message.

  7. #7
    Membre habitué
    Inscrit en
    Juin 2007
    Messages
    362
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 362
    Points : 141
    Points
    141
    Par défaut

    Entre temps et avant ta dernière réponse, j'ai réussi à exécuter la commande sed.

    J'ai utilisé ta 6ème remarque en ajoutant des virgules comme séparateur pour ma commande sed.

    Du coup, comme mon URL était courte, j'ai supprimé mes variables pour exécuter mon script.
    Néanmoins, je vais quand même faire le test avec les variables pour maîtriser cet exemple.

    merci

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

Discussions similaires

  1. [PHP 5.2] Modification de fichiers de configuration
    Par Sliim dans le forum Langage
    Réponses: 4
    Dernier message: 10/07/2009, 23h28
  2. Réponses: 2
    Dernier message: 08/08/2007, 19h58
  3. [XP Pro] Script modification paramètres réseau
    Par lidouka dans le forum Administration
    Réponses: 4
    Dernier message: 10/03/2007, 22h03
  4. Réponses: 6
    Dernier message: 03/02/2006, 16h08

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