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 habitué 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
    Points : 149
    Points
    149
    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
    Points : 28 129
    Points
    28 129
    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

  3. #3
    Membre habitué 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
    Points : 149
    Points
    149
    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 habitué 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
    Points : 149
    Points
    149
    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 habitué 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
    Points : 149
    Points
    149
    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