Форматирование файла CSV - PullRequest
0 голосов
/ 29 марта 2011

Я написал Perl-скрипт для вывода текстового файла, заполненного IP-адресами и портами, которые я отсканировал в Microsoft Excel. Теперь, когда данные превосходны, мой начальник хочет, чтобы я организовал файл в формате csv, например

Server, port, protocol, random, random, random
ns1,    25,   tcp,      stuff,  stuff,  stuff

Может ли кто-нибудь помочь мне с этим, пожалуйста?

Код:

#!/usr/bin/perl

$input = `Cat /cygdrive/c/Windows/System32/test11.txt | grep -v 'SYN Stealth'`;
chomp input;
$output =" /cygdrive/c/Users/bpaul/Desktop/194.csv ";
if (! -e "$output")
{
`touch $output`;
}
open (OUTPUTFILE, ">$output") || die "Can't Open file $output";
print OUTPUTFILE "$input\n";
close (OUTPUTFILE);

Вот кусок моего файла

Nmap scan report for 69.25.194.2 Host is up (0.072s latency). Not shown: 9992 filtered ports PORT STATE SERVICE 25/tcp open smtp
80/tcp open http
82/tcp open xfer
443/tcp open
https 4443/tcp closed
pharos 5666/tcp closed
nrpe 8080/tcp closed
http-proxy 9443/tcp closed tungsten-https

Пока мой код взял мой txt-файл и вывел его в Excel, теперь мне нужно отформатировать данные следующим образом:

Желаемый вывод:

Server, port, protocol, random, random, random
ns1,    25,   tcp,      stuff,  stuff,  stuff

1 Ответ

4 голосов
/ 29 марта 2011

Полагаю, вы имели в виду 69.25.194.2, когда сказали ns1.

use strict;
use warnings;

use Text::CSV_XS qw( );

my $csv = Text::CSV_XS->new({ binary => 1, eol => "\n" });

$csv->print(\*STDOUT, [qw(
    Server
    port
    protocol
    random
    random
    random
)]);

my $host = '[unknown]';

while (<>) {
    $host = $1 if /Nmap scan report for (\S+)/;

    my ($port, $protocol) = m{(\d+)/(\w+) (?:open|closed)/
        or next;

    $csv->print(\*STDOUT, [
        $host,
        $port,
        $protocol,
        'stuff',
        'stuff',
        'stuff',
    ]);
}

Использование:

grep -v 'SYN Stealth' /cygdrive/c/Windows/System32/test11.txt | perl to_csv.pl > /cygdrive/c/Users/bpaul/Desktop/194.csv

Текст :: CSV_XS

Обновление : заменено жестко закодированным ns1 адресом сканируемого компьютера.

Обновление : заменено общее использование на то, что будет использовать OP.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...