Как использовать bash pipe со скриптом Perl - PullRequest
0 голосов
/ 07 июня 2018

Мне нужно выполнить эту команду, используя сценарий perl с использованием system.Эта строка кода не работает. У вас есть идеи, почему

system("ping -w 300  -i $interval $host \|  sed 's/\(.*\)/\$(date +%F\ %T) \1/g' >> $ test" )

Ответы [ 2 ]

0 голосов
/ 08 июня 2018

Ваша программа изобилует ошибками внедрения кода.

Использование локального времени для меток времени без включения информации о часовом поясе (например, смещение от UTC) проблематично в местах с переходом на летнее время.

Вотрешение, которое решает эти проблемы:

use POSIX              qw( strftime );
use String::ShellQuote qw( shell_quote );

open(my $fh_log, '>>', $test)
   or die $!;

open(my $pipe, '|-', "ping", "-w", "300", "-i", $interval, "--", $host)
   or die $!;

while (<$pipe>) {
   my $ts = strftime("%Y-%m-%dT%H:%M:%S%z", localtime);
   print($fh_log "[$ts] $_");
}
0 голосов
/ 07 июня 2018
my $ping_check =`ping -w 300  -i $interval $host | while read line; do echo \`date \+%F%T\` - \$line >> $logfile; done `;

используя эту строку кода, я смог получить то, что мне нужно

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