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

Unix Discussion :

corriger des lignes d'un ensemble de fichiers


Sujet :

Unix

  1. #1
    Membre éclairé Avatar de cashmoney
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    298
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 298
    Par défaut corriger des lignes d'un ensemble de fichiers
    Bonjour,

    Débutant en unix, je constate des erreurs d'ip dans des fichiers sur un poste de production et il y en a 548.

    j'ai donc eu l'idée de créer un script qui passe tous ces fichiers au peigne fin et corrige les adresses IP erronées dans les fichiers.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    #!/bin/bash
     
    CD/ MESFICHIERS /* repertoire qui contient les fichiers*/
     
    for i in grep -n (192.168.1.200, *.FICH)
     
    do
    echo $i
    sed -i 's(192.168.1.200/192.168.1.1)g'
    done
    Au lancement de ce script, j'ai des erreurs au niveau de la ligne for...
    Je voudrais aussi attaché un log à ce script afin d'y inscrire les fichiers modifiés.

    Merci de votre coup de main

  2. #2
    Modérateur
    Avatar de gangsoleil
    Homme Profil pro
    Manager / Cyber Sécurité
    Inscrit en
    Mai 2004
    Messages
    10 150
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Manager / Cyber Sécurité

    Informations forums :
    Inscription : Mai 2004
    Messages : 10 150
    Par défaut
    Bonjour,

    Tu confonds les syntaxes dans ton script. Voici une proposition non testée (attention a la syntaxe de sed, je ne sais pas s'il ne va pas interpreter le . comme "n'importe quel caractere").


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
    #!/bin/bash
     
    LOGFILE=/tmp/error_ip.log
    cd /rep1/MESFICHIERS  ##repertoire qui contient les fichiers
     
    touch $LOGFILE
     
    date >> $LOGFILE ## Pour avoir la date dans le fichier de log
     
    for i in $(grep -l 192.168.1.200 *.FICH)
    do
      echo $i >> $LOGFILE
      sed -i 's/192.168.1.200/192.168.1.1/g' $i
    done
    "La route est longue, mais le chemin est libre" -- https://framasoft.org/
    Les règles du forum

  3. #3
    Membre éclairé Avatar de cashmoney
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    298
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 298
    Par défaut
    Bonjour,

    Après avoir bien lu la doc sur les commandes shell, j'ai sorti ce script qui fonctionne impec.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    #!/bin/bash
     
    CD/ MESFICHIERS /* repertoire qui contient les fichiers*/
     
     
    for i in $(grep -l "192.168.1.200" *.FICH)           
    do                                              
    echo $i                                         
    sed -i '1,$ s/192.168.1.200/192.168.1.1/g' $i         
    done                                            
     
    cd -
    Maintenant comment inscrire chaque fichier modifié dans un log?

    en ajoutant cette ligne dans le script?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    sed -i '1,$ s/192.168.1.200/192.168.1.1/g' $i >>Modif.log
    Merci pour votre aide

  4. #4
    Membre éclairé Avatar de cashmoney
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    298
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 298
    Par défaut
    Merci Gangsoleil, désolé on a sorti le même script en même temps. En tout cas, je te remercie pour ta réactivité et aussi merci pour les éléments ajoutés concernant le log.

  5. #5
    Membre éclairé Avatar de cashmoney
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    298
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 298
    Par défaut
    Pour résumer le tout avec la fusion des 2 scripts, voici le script final qui fonctionne à merveille.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
    #!/bin/bash
     
    LOGFILE=/tmp/error_ip.log
    cd /rep1/MESFICHIERS  ##repertoire qui contient les fichiers
     
    touch $LOGFILE
     
    date >> $LOGFILE ## Pour avoir la date dans le fichier de log
     
    for i in $(grep -l "192.168.1.200" *.FICH)
    do
      echo $i >> $LOGFILE
      sed -i '1,$ s/192.168.1.200/192.168.1.1/g' $i
    done
    Encore merci gangsoleil

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

Discussions similaires

  1. Ressortir des cellules d'un ensemble de fichiers XLS
    Par Invité dans le forum VBScript
    Réponses: 1
    Dernier message: 08/08/2012, 15h16
  2. ajouter des lignes de code dans un fichier texte
    Par oodbae_adriano dans le forum MATLAB
    Réponses: 4
    Dernier message: 06/12/2010, 10h39
  3. Réponses: 5
    Dernier message: 22/04/2008, 13h53
  4. [VBA-Excel] copier des lignes de données d'un fichier à un autre
    Par ash_rmy dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 31/07/2006, 10h17
  5. Nombre ligne dans un ensemble de fichier
    Par devdev2003 dans le forum Linux
    Réponses: 8
    Dernier message: 13/05/2005, 18h59

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