внутри функции оболочки:
- вы можете использовать синтаксис
$()
для получения результата пинга в переменной - вы можете повторить результат
в программе perl: вы можете открыть канал |
и прочитать pd файла оболочки
. sh:
getrtt()
{
ip=$1;
if result=$(ping $ip -c 5 -t 5 | grep -P 'ms$')
then
echo $result
else
echo '1'
fi
}
graboutput файла .pl:
#!/usr/bin/perl
local *EXEC; open EXEC,'. ./ping.sh && getrtt 8.8.8.8|' or die $!;
while (<EXEC>) {
# do something with the result
print;
}
close EXEC;
exit $?;
1; # $Source: /my/perlscritps/graboutput.pl$
Примечание. Пинг в моем окне linux не имеет того же формата, например: 5 packets transmitted, 0 received, +5 errors, 100% packet loss, time 4005ms
, поэтому я изменил параметр -oP команды grep w / i ping. sh