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

Scripts/Batch Discussion :

Remplacement d'une chaîne de caractères


Sujet :

Scripts/Batch

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2019
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Janvier 2019
    Messages : 12
    Par défaut Remplacement d'une chaîne de caractères
    Bonjour,

    Je suis actuellement entrain de faire un windump sur mon poste pour analyser le flux réseau.

    Je récupère bien les éléments que je stocke dans un .txt.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    WinDump.exe -i 2 -q -n -t tcp  >windumptest.txt
    IP x.x.x.x.60272 > x.x.x.x.7680: tcp 0
    IP x.x.x.x.443 > x.x.x.x.4480: tcp 45

    Je réalise un script powershell pour me permettre de modifier mon fichier texte. Je suis débutant.

    Code PowerShell : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    #variable de contenant mon fichier avec IP
    $fichier="C:\Users\\Documents\windumptest.txt"
     
    #variable de contenant mon fichier avec IP du résultat de la variable $contenu
    $newcontenu = "C:\Users\\Documents\windumptest2.txt"
     
    #prendre les objets de mon txt et enlever tout les doublons et écrire le résultat dans la variable $newcontenu
    Get-Content $fichier| Sort-Object | Get-Unique > $newcontenu
     
    #variable qui va traverser mon fichier via la variable $newcontenu et replacer les caractéres voulus
    $contenu= get-content $newcontenu | foreach {$_ -replace "IP"," " -replace ":"," " -replace "tcp", " " -replace ">",";"} 
    ($newcontenu).Remove(1,4)
     
    #écrit dans le fichier le résultat de la variable $contenu
    Set-Content $newcontenu $contenu
     
     
    Write-Output $contenu


    Résultat :
    x.x.x.x.6090 > x.x.x.x.3389 47



    J'ai plusieurs questions.
    -Comment faire pour supprimer le chiffre à côté de mon IP ici 47? Car quand je veux remplacer celui-ci il me supprime les chiffres des adresses IP.
    -Y-a-t'il une méthode plus propre que de faire plusieurs replace d'affilée ?

    Cordialement,

  2. #2
    Membre chevronné
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Février 2012
    Messages
    281
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Lot et Garonne (Aquitaine)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2012
    Messages : 281
    Par défaut
    salut Dimux

    - Comment faire pour supprimer le chiffre à côté du tcp? Car quand je veux remplacer celui-ci il me supprime les chiffres des adresses IP.
    avec une regex (expression régulière), ou un split, ou en convertissant le fichier en fichier CSV, ou il doit bien y avoir d'autre solution ...

    - Y-a-t'il une méthode plus propre que de faire plusieurs replace d'affilée ?
    normalement non mais si tu split ou transforme ton fichier en objet, tu peut choisir de n'afficher que les colonnes qu'il te convient

    un exemple en convertissant en CSV :
    Code powershell : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    #variable de contenant mon fichier avec IP
    $fichier = "C:\Users\dimitri.libessart\Documents\windumptest.txt"
     
    # preparation entete fichier CSV
    $Header = "c1", "ipsrc", "c3", "ipdest", "c5", "c6"
     
    # lecture du fichier en tand que CSV
    $dump = Import-Csv $fichier -Header $Header -Delimiter " " 
     
    # suppression des deux points (:)
    $dump | foreach {
        $_.ipdest = $_.ipdest -replace ":"," "
        }
     
    # ecriture en comme fichier texte
    $dump | foreach {
        "$($_.ipsrc) ; $($_.ipdest)"
        } | Set-Content $newcontenu
     
    # affichage en tant objet
    $dump | select ipsrc, @{n="s";e={";"}}, ipdest

  3. #3
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2019
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Janvier 2019
    Messages : 12
    Par défaut
    Merci pour ta réponse 6ratgus.

    J'ai un peu avancé.

    Voici mon expression régulière.
    ([0-9]{1,3}\.){3}([0-9]){1,3};[0-9]{1,5};([0-9]{1,3}\.){3}([0-9]){1,3};[0-9]{1,5}

    Code PowerShell : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    #variable de contenant mon fichier avec IP
    $fichier="C:\Users\nom\Documents\windumptest.txt"
     
    #variable de contenant mon fichier avec IP du résultat de la variable $contenu
    $newcontenu = "C:\Users\nom\Documents\windumptest2.txt"
     
    #prendre les objets de mon txt et enlever tout les doublons et écrire le résultat dans la variable $newcontenu
    Get-Content $fichier| Sort-Object | Get-Unique > $newcontenu
     
    #variable qui va traverser mon fichier via la variable $newcontenu et replacer les caractéres voulus
    $contenu= get-content $newcontenu | foreach {$_ -replace "IP"," " -replace ":"," " -replace "tcp", " " -replace ">",";"} 
     
    #écrit dans le fichier le résultat de la variable $contenu
    Set-Content $newcontenu $contenu
     
    $name=Get-ChildItem -Path C:\Users\nom\Documents -Filter 'windumptest2.txt' | ForEach-Object { 
        (Get-Content $_.FullName).Replace('.',';') | Out-File $_.FullName} 
     
     
    Get-Content -Path C:\Users\nom\Documents\windumptest2.txt

    Sortie :

     185;52;127;147;443 ; 10;10;21;39;6782    1134
     185;52;127;147;443 ; 10;10;21;39;6782    1198

    Avec ton aide :
    Code PowerShell : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    #variable de contenant mon fichier avec IP
    $fichier="C:\Users\\Documents\windumptest.txt"
     
    $newcontenu = "C:\Users\\Documents\windumptest2.txt"
     
     
     
    $Header = "c1", "ipsrc", "c3", "ipdest", "c5", "c6"
     
    $dump = Import-Csv $fichier -Header $Header -Delimiter " " 
     
     
     
    $dump | foreach {
        $_.ipdest = $_.ipdest -replace ":"," "
        }
     
     
    $dump | foreach {
        "$($_.ipsrc) ; $($_.ipdest)"
        } | Set-Content $newcontenu
     
    $a=Get-Content -Path C:\Users\\Documents\windumptest2.txt | Sort-Object| Get-Unique 
     
    Set-Content $newcontenu $a



    Résultat:

    10.10.21.39.6782 ; 185.52.127.147.443  
    185.52.127.147.443 ; 10.10.21.39.6782 
    C'est presque parfait =)

    Je ne comprends pas ta dernière commande. Cela ajoute juste les colonnes comme dans un excel ?

    Je suis bloqué à ajouter un ; au ipsource et de destination juste avant le port.
    Résultat recherché :
    10.10.21.39;6782 ; 185.52.127.147;443  
    185.52.127.147;443 ; 10.10.21.39;6782 
    Je vais regarde cela je te tiens au jus.

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

Discussions similaires

  1. Réponses: 6
    Dernier message: 10/04/2017, 13h10
  2. Sed et le remplacement d'une chaîne de caractères
    Par Niemand dans le forum Shell et commandes GNU
    Réponses: 11
    Dernier message: 27/03/2015, 07h39
  3. Réponses: 11
    Dernier message: 15/07/2014, 09h52
  4. Réponses: 0
    Dernier message: 19/01/2009, 10h00
  5. Réponses: 4
    Dernier message: 04/11/2006, 20h36

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