У меня есть этот код, где я хочу обрабатывать несколько файлов csv (в настоящее время это всего один файл) и использовать perl для отображения его формата перед его отправкой в linux-box и заменяет исходное содержимое файла с помощью соединения ssh. Вот код
#!/usr/bin/perl -w
use strict;
# this is a csv which will contains IP addresses of one specific category for e.g malware.
my $seculert_qradar_list = "$seculert_dir/seculert.csv";
#ssh connection information
my $qradar_console = '10.10.1.22';
my $qradar_ssh_key = "$seculert_dir/qr-id_dsa";
my $qradar_ssh_knownhosts = "$seculert_dir/known_hosts";
#################################################################################
# NOTE: this is the "OUT" file.
# 1 - Name
# 2 - Sub-Name
# 3 - IP Address
# 4 - is colour, deprecated
# 5 - database length, deprecated
# 6 - asset weight, deprecated
# 7 - an ID for the 'record' each unique name pair (first 2 columns) gets an ID
#################################################################################
my $source = 'BAD-IP-Addresses-LABEL';
my $type_description = 'honeypots-for-examnple';
# Based upon the format described above I want to render the csv as written in print OUT statement. This format is important, because the endsystem process the file (remotenet.conf) based upon the provided layout.
open(FP, ">>$seculert_qradar_list");
for my $line (<FP>) {
my ($hostname, $ip, $something1, $something2) = split(/,/, $line);
print OUT "$source $type_description $ip #FF0000 0 90 29\n";
}
close(FP);
# Here I just want the contents of modified csv to be written over remotenet.conf. This file is then processed through auto-deploy script by the system. The results get populated on front-end webserver.
print "Sending to QRadar...\n";
# SSH To QRadar's Console and push out file + trigger update
`scp -i $qradar_ssh_key -o UserKnownHostsFile=$qradar_ssh_knownhosts -o StrictHostKeyChecking=no root\@$qradar_console:/store/configservices/staging/globalconfig/remotenet.conf .`;
`sed -i -e '/^SECULERT/d' remotenet.conf`;
`cat $seculert_qradar_list >> remotenet.conf`;
`scp -i $qradar_ssh_key -o UserKnownHostsFile=$qradar_ssh_knownhosts -o StrictHostKeyChecking=no remotenet.conf root\@$qradar_console:/store/configservices/staging/globalconfig/remotenet.conf`;
print "Cleaning up...\n";
# Remove our SECULERT list and the newly pushed out qradar conf
unlink($seculert_qradar_list); unlink ('remotenet.conf');
print "Deploying in QRadar...(takes time to complete)\n";
# QRadar magic
`ssh -i $qradar_ssh_key -o UserKnownHostsFile=$qradar_ssh_knownhosts -o StrictHostKeyChecking=no root\@$qradar_console /opt/qradar/upgrade/util/setup/upgrades/do_deploy.pl`;
print "Complete!\n\n";
Что мне интересно узнать и, возможно, получить помощь от программиста на Perl, используя один дескриптор файла, я могу открыть несколько файлов, например, в моем случае у меня есть что-то вроде этого
- вирус.csv
- бот.csv
- вредоносный файл.csv
Нужно ли мне повторно копировать код цикла for для каждого файла csv с другим дескриптором? Целевой файл remotenet.conf
остается прежним.
После правильного рендеринга, например, для одного CSV-файла, remotenet.conf на веб-интерфейсе будет выглядеть примерно так:
Virus
10.10.2.1
.......
Bot
10.10.4.1
......
Было бы здорово, если бы несколько изменений происходили за один раз, с одним автоматическим развертыванием (см. код в конце). Я надеюсь, что смогу понять проблему. Пожалуйста, дайте мне знать, если требуются дополнительные разъяснения.
Благодарность
ЧЕГО Я ХОЧУ СДЕЛАТЬ
Мне нужен динамический код, в котором в одной папке хранится несколько csv, готовых к рендерингу. Последовательность описывается как: -
- читать каждый CSV-файл из папки.
- преобразует его в приемлемый формат.
- Измените значения двух переменных на основе имени файла csv. Например,
Для имени файла malware.csv
мой источник $ = 'ПЛОХИЕ IP-адреса-LABEL'; мой $type_description = 'приманки для примера';
Для bot.csv
мой $source = 'бот-сеть'; мой $type_description = 'топ-10';
В конце копирует отформатированный файл вместе с содержимым в remotenet.conf через ssh.
FP
для добавления, но пытаетесь прочитать из него. (2) Где открываетсяOUT
? (3) Не могли бы вы уточнить, какая часть должна повторяться для каждого файла CSV? - person amon   schedule 21.12.2013FP
таким образом. - person user3066819   schedule 21.12.2013