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 :

Changer et décommenter une ligne dans un fichier avec sed


Sujet :

Shell et commandes GNU

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Homme Profil pro
    Gestionnaire de parc micro-informatique
    Inscrit en
    Mai 2017
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Gestionnaire de parc micro-informatique

    Informations forums :
    Inscription : Mai 2017
    Messages : 8
    Par défaut Changer et décommenter une ligne dans un fichier avec sed
    Bonjour tout le monde.

    J'ai fait un script #!/bin/bash, qui intègre des commandes simples comme APT, WGET et DPKG, afin d'installer mon agent Fusioninventory (pour GLPI) sur des postes clients mais il y en une qui ne passe pas...la commande SED.
    Je dois décommenter et changer une partie d'une ligne dans un fichier de configuration.

    Ligne à modifier

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    #server = http://server.domain.com/glpi/plugins/fusioninventory/
    en

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    server = http://192.168.x.x/glpi/plugins/fusioninventory/
    Pour cela je fais

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sed -i -e "s/#server = http://server.domain.com/glpi/plugins/fusioninventory/ /server = http://192.168.x.x/glpi/plugins/fusioninventory//g" /etc/fusioninventory/agent.cfg
    Mais ça plante avec l'erreur

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sed: -e expression n°1, caractère 20: option inconnue pour `s'
    Avez vous s'il vous plaît une solution à mon problème? Pour info, je découvre cette commande SED et j'ai aussi essayer avec les anti-slash '\' qui sans doute sont mal placés puisque je retrouve plus ou moins la même erreur sauf que le numéro du caractère change.

  2. #2
    Expert confirmé Avatar de disedorgue
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    4 357
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Décembre 2012
    Messages : 4 357
    Par défaut
    Bonjour,

    Normal, tu utilise pour séparateur de substitution le '/' mais dans ton expression tu en as plusieurs. Donc suffit juste d'utiliser un caractère qui n'est pas dans ton expression au lieu du '/', comme par exemple '@':
    au lieu de:

  3. #3
    Membre habitué
    Homme Profil pro
    Gestionnaire de parc micro-informatique
    Inscrit en
    Mai 2017
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Gestionnaire de parc micro-informatique

    Informations forums :
    Inscription : Mai 2017
    Messages : 8
    Par défaut
    Merci de ton aide Disedorgue, j'ai entre temps réussi à le faire avec la commande

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sed -i -e "s/\#server = http:\/\/server.domain.com\/glpi\/plugins\/fusioninventory\//server = http:\/\/192.168.x.x\/glpi\/plugins\/fusioninventory\//g" /etc/fusioninventory/agent.cfg
    Mais par contre je rencontre un autre problème, tout se réalise sans encombre dans mon script qui intègre je le répète des APT,WGET DPKG puis le SED...j'ai rajouté 2 dernières commandes après mon SED dans le script, à la ligne comme toutes les autres commandes mais elles ne se réalisent pas, incompréhensible.

    les 2 dernières commandes ne fonctionnent pas


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    sed -i -e "s/\#server = http:\/\/server.domain.com\/glpi\/plugins\/fusioninventory\//server = http:\/\/192.168.x.x\/glpi\/plugins\/fusioninventory\//g" /etc/fusioninventory/agent.cfg
    systemctl restart fusioninventory-agent
    pkill -USR1 -f -P 1 fusioninventory-agent
    Ai-je oublié quelque chose après la commande SED pour enchaîner à nouveau une autre commande? Dois-je utiliser WAIT ou SLEEP pour laisser quelques secondes après la commande SED?
    Merci de votre aide.

  4. #4
    Futur Membre du Club
    Homme Profil pro
    -
    Inscrit en
    Mai 2019
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : -

    Informations forums :
    Inscription : Mai 2019
    Messages : 5
    Par défaut
    Bonjour,

    Concernant l’enchaînement de commandes:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    cmdA ; cmdB – Lance cmdA puis cmdB sans se soucier du résultat de cmdA
    
    cmdA && cmdB – Lance cmdB si cmdA n’a pas retourné d’erreur
    
    cmdA || cmdB – Lance cmdB si cmdA a retourné une erreur
    Concernant le Wait et le Sleep

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    man wait
    	wait — await process completion
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    man sleep 
    	 sleep - delay for a specified amount of time
    à vous de choisir en fonction de ce que vous voulez.

Discussions similaires

  1. [Batch] Modifier/remplacer/ supprimer une ligne dans un fichier avec Batch
    Par SAIDIyas dans le forum Scripts/Batch
    Réponses: 9
    Dernier message: 13/07/2018, 21h08
  2. Réponses: 1
    Dernier message: 22/09/2014, 18h57
  3. Réponses: 4
    Dernier message: 14/08/2010, 16h43
  4. Changer une ligne dans un fichier
    Par peuf23 dans le forum Langage
    Réponses: 9
    Dernier message: 03/08/2005, 16h43
  5. Supprimer une ligne dans un fichier
    Par sbeu dans le forum Langage
    Réponses: 3
    Dernier message: 13/05/2003, 10h30

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