Я написал пару функций для обработки журналов и grep для строки. Я вычленить информацию строки 100.81.2.59:4500', 'dst:172.25.150.190:4500'
.Когда функция называется Бревна хвостами, как и следовало ожидать, упомянутые выше строки также присутствуют в журналах, но функция всегда возвращаетФункция Perl для grep строки
WARN Not found "string" n ipsecd.log
Функция:
sub tail_logs{
my ($self) = @_;
my $cmd = 'tail -n 500 /a/logs/ipsecd.log | grep NAT';
$self->execute('$cmd');
if ($self->execute($cmd)) {
return $self->get_stdout();
}
else {
die " Failed to execute $cmd";
}
}
sub grep {
my ($self,$logLines, @strings) = @_;
for my $string (@strings) {
if ($logLines =~ /$string/) {
INFO("Found $string in ipsecd.log");
}
else {
#return false, we cound find $string
WARN("Not Found $string in ipsecd.log");
return 0;
}
}
# found all strings in the $loglines, return true.
return 1;
}
вызов функции:
my @checkStrings = ('100.81.2.59:4500', 'dst:172.25.150.190:4500');
$self->{'log'} = $self->{'log_obj'}->tail_logs();
$self->{'log_verify'}= $self->{'log_obj'}->grep($self->{'log'}, @checkStrings);
if ($self->{'log_verify'}) {
$self->assert(
$self->{'log_verify'},
'Found info in ipsecd.logs'
);
Loglines
[04-15 21:17:04.614251 (05026) D ipsec_processor.: 496] processOutbound: IPsec EDP-UDP (NAT-T) packet to destination - src addr:100.81.2.59:4500 dst:172.25.150.190:4500
[04-15 21:17:04.821548 (05026) D ipsec_processor.: 496] processOutbound: IPsec EDP-UDP (NAT-T) packet to destination - src addr:100.81.2.59:4500 dst:172.25.150.190:4500
[04-15 21:17:05.029262 (05026) D ipsec_processor.: 496] processOutbound: IPsec EDP-UDP (NAT-T) packet to destination - src addr:100.81.2.59:4500 dst:172.25.150.190:4500
[04-15 21:17:05.237628 (05026) D ipsec_processor.: 496] processOutbound: IPsec EDP-UDP (NAT-T) packet to destination - src addr:100.81.2.59:4500 dst:172.25.150.190:4500
[04-15 21:17:05.444636 (05026) D ipsec_processor.: 496] processOutbound: IPsec EDP-UDP (NAT-T) packet to destination - src addr:100.81.2.59:4500 dst:172.25.150.190:4500
Пожалуйста, предоставьте [короткий, самосохраненный, правильный пример] (http://sscce.org). Какие модули вы используете? – choroba
@choroba Я не использую никаких модулей perl cpan. Эти две функции являются частью библиотеки, которую я создал, и я вызываю эти две функции из своего тестового сценария. – user3587025
http://www.perlmonks.org/?node_id=1124151 – choroba