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

Langage Perl Discussion :

Création fichier CSV avec incrémentation des arguments dans les cellules


Sujet :

Langage Perl

Mode arborescent

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Mai 2013
    Messages
    198
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2013
    Messages : 198
    Par défaut Création fichier CSV avec incrémentation des arguments dans les cellules
    Bonjour,

    je fais du perl tous les 36 du mois et je me décide à solliciter de l'aide pour 2 problèmes.

    J'ai plusieurs fichiers CSV (mis 4 fichiers au format .XLS) dont le nom contient le protocole TCP ou UDP ainsi que le numéro du port. Le contenue du fichier à les adresses IP utilisant ces ports.

    J'ai fait un script lisant tous les format CSV d'un répertoire:
    -affiche => @IP protocole port
    -affiche le nombre de fois qu'une adresse IP apparaît
    -crée un fichier CSV contenant par ligne l'@IP protocole port (voir ci-dessous un bout)


    10.221.166.1 TCP 135
    10.235.95.97 TCP 12443
    10.221.166.1 TCP 135
    10.221.166.1 TCP 139
    10.235.125.100 TCP 135
    10.221.166.1 UDP 123
    10.221.166.1 UDP 137


    Je ne peux pas utiliser les modules à causes du proxy au travail.

    Objectif 1

    Que le fichier traite par ligne tous les ports et protocole utilisé par une adresse IP pour arriver à quelque chose comme ceci. Si on peut être fainéant et éviter d'autant des erreurs

    10.221.166.1 TCP_135_139 UDP_123_137

    Ca évite d'avoir autant de ligne que de port.

    les underscore sont utilisé pour éviter des problèmes d'interprétation avec les virgules ou points virgules.

    Objectif 2

    Mettre dans la première ligne du fichier CVS pour faire des tries sans perdre une ligne
    Cellule 1 => Adresse
    Cellule 2 => Protocole
    Cellule 3 => Port


    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
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    #!/usr/bin/perl
    use strict;
    use warnings;
    use DateTime;
     
    my $dt = DateTime->now (time_zone=>'Europe/Paris');
    my $ymd = $dt->ymd;
    my $hms = $dt->hms('-');
     
     
    my @all = glob 'C:\Users\Alexandre\Documents\PERL_scripts\GARENCE\*.csv';
     
    # Ces variables sont crées en dehors des boucles pour les utiliser dans et en dehors des boucles.
    	my @ligne;
    	my @IP;
    	my $word;
    	my %count;
     
    foreach my $fichier (@all) {
     
    	# Récupére les chiffres du nom du fichier qui correspondant au numéro de port	
    	my @port = $fichier =~ m/\d+/g;
     
    	# Récupére dans le nom du fichier le nom TCP ou UDP
    	my @protocole = $fichier =~ m/(TCP|UDP)/ig;
     
     
    	open my $CSV, '>>', "syntheseCSV\-$ymd\-$hms\.csv";
    	open my $fh, '<', $fichier;
     
     
    		while (<$fh>) {
    			chomp;
     
    			# Fait un split sur "," et ";" et ne place que l'élément 0 dans @ligne
    			my @ligne = (split /[,;]/)[0];
     
    			# Ne traite pas les lignes qui contiennent une lettre majuscule ou minuscule
    			next if /[a-zA-Z]/;
     
    			#Affiche les éléments qui seront inclus dans le fichiers CSV
    			print "$ligne[0]\t @protocole\t @port \n";
     
    			#Envoie les données au fichier CSV
    			print $CSV "$ligne[0]\,@protocole\,@port\n";
     
    			# Ajoute la valeur de @ligne à @IP
    			push @IP, @ligne;
     
     
    			}
    		}
     
    			print "\n";
     
    	foreach $word (@IP) {
    $count{$word} += 1;
    }
    # Trie par ordre décroissant des valeurs
    foreach $word (sort { $count{$b} <=> $count{$a} } keys %count) {	
    print "$word\t existe $count{$word} fois\n";
    }
    Je suis preneur de toute idée

    Fichiers attachés Fichiers attachés

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

Discussions similaires

  1. ajouter des combobox dans les cellules de stringgrid
    Par sky88 dans le forum Débuter
    Réponses: 5
    Dernier message: 22/01/2009, 18h35
  2. DataGridView et format des valeurs dans les cellules
    Par saultapt dans le forum Windows Forms
    Réponses: 5
    Dernier message: 17/06/2008, 16h55
  3. Afficher des Couleurs dans les Cellules automatiquement
    Par dreams11 dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 04/11/2007, 22h17
  4. Réponses: 3
    Dernier message: 04/04/2007, 14h18
  5. JTable avec des JPanel dans les cellule
    Par pigpen dans le forum Composants
    Réponses: 11
    Dernier message: 13/04/2006, 19h58

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