Доброго времени суток. Вот такая задача у меня:
Хочу, чтоб графиками mrtg отобразились потери моей сетки. Есть пакет mrtg-ping-probe, но, на мой взгляд, он немного запутанный. И по-этому пытаюсь создавать графики БЕЗ него. Так, написал такой конфиг:# Begin
WorkDir: /usr/local/www/apache22/data/mrtg/mrtg-ping
Target[192.168.1.6_loss]: '/sbin/ping -c 1 -t 1 192.168.1.6 | awk '{print $7}' | grep %'
Title[192.168.1.6_loss]: Packet Loss Analysis
PageTop[192.168.1.6_loss]: <H1>Packet Loss Analysis for 192.168.1.6</H1>
MaxBytes[192.168.1.6_loss]: 100
AbsMax[192.168.1.6_loss]: 101
WithPeak[192.168.1.6_loss]: ymwd
Options[192.168.1.6_loss]: gauge, nopercent, nobanner
Unscaled[192.168.1.6_loss]: dwmy
YLegend[192.168.1.6_loss]: Packet Loss (%)
ShortLegend[192.168.1.6_loss]: %
Legend1[192.168.1.6_loss]: Packet Loss Percentage
LegendI[192.168.1.6_loss]: Percent of loss:
LegendO[192.168.1.6_loss]:# EOF
Отдельно команда ping работает. Вот:
Server# ping -c 1 -t 1 192.168.144.10 | awk '{print $(7)}' | grep %
100.0%
Server#А вот с MRTG - выдает:
Server# /usr/local/bin/mrtg /usr/local/etc/mrtg/mrtg.cfg-ping
2011-01-07 23:43:41: ERROR: Target[192.168.1.6_loss][_IN_] ''/sbin/ping -c 1 -t 1 192.168.1.6 | awk '{print $7}' | grep %'' (eval): syntax error at (eval 21) line 1, near "'/sbin/ping -c 1 -t 1 192.168.1.6 | awk '{"2011-01-07 23:43:41: ERROR: Target[192.168.1.6_loss][_OUT_] ''/sbin/ping -c 1 -t 1 192.168.1.6 | awk '{print $7}' | grep %'' (eval): syntax error at (eval 22) line 1, near "'/sbin/ping -c 1 -t 1 192.168.1.6 | awk '{"
Server#
ПОЧЕМУ :-<(
Заранее благодарю.
смотрите на строку очень внимательно:
Target[192.168.1.6_loss]: '/sbin/ping -c 1 -t 1 192.168.1.6 | awk '{print $7}' | grep %'подсказка: кавычки
> смотрите на строку очень внимательно:
> Target[192.168.1.6_loss]: '/sbin/ping -c 1 -t 1 192.168.1.6 | awk '{print $7}'
> | grep %'
> подсказка: кавычкиАх да, понял я, спасибо. Но как можно избегать ковычек, или как можно решить проблему?
>> смотрите на строку очень внимательно:
>> Target[192.168.1.6_loss]: '/sbin/ping -c 1 -t 1 192.168.1.6 | awk '{print $7}'
>> | grep %'
>> подсказка: кавычки
> Ах да, понял я, спасибо. Но как можно избегать ковычек, или как
> можно решить проблему?может быть так заработает:
Target[192.168.1.6_loss]: "/sbin/ping -c 1 -t 1 192.168.1.6 | awk '{print $7}' | grep %"
или так:
Target[192.168.1.6_loss]: "/sbin/ping -c 1 -t 1 192.168.1.6 | awk '{print \$7}' | grep %"
эксперементировать надо.
>[оверквотинг удален]
>>> подсказка: кавычки
>> Ах да, понял я, спасибо. Но как можно избегать ковычек, или как
>> можно решить проблему?
> может быть так заработает:
> Target[192.168.1.6_loss]: "/sbin/ping -c 1 -t 1 192.168.1.6 | awk '{print $7}'
> | grep %"
> или так:
> Target[192.168.1.6_loss]: "/sbin/ping -c 1 -t 1 192.168.1.6 | awk '{print \$7}'
> | grep %"
> эксперементировать надо.Неа. Не получилось.
Попробую по-другомч сформулировать свой вопрос.
Надо отдельно вывести величину процента потерий в команде PING. Например изServer# ping -c 4 192.168.1.6
PING 192.168.1.6 (192.168.1.6): 56 data bytes
64 bytes from 192.168.1.6: icmp_seq=0 ttl=64 time=0.128 ms
64 bytes from 192.168.1.6: icmp_seq=1 ttl=64 time=0.073 ms
64 bytes from 192.168.1.6: icmp_seq=2 ttl=64 time=0.071 ms
64 bytes from 192.168.1.6: icmp_seq=3 ttl=64 time=0.069 ms--- 192.168.1.6 ping statistics ---
4 packets transmitted, 4 packets received, 0.0% packet loss
round-trip min/avg/max/stddev = 0.069/0.085/0.128/0.025 ms
Server#надо вывести "0.0" из предпоследной строки или только "0".
Вариант
ping -c 1 -t 1 192.168.1.6 | awk '{print $7}' | grep %
не подашел, поскольку ковычки "мешают" см. выше.
Во-первых, надо заключать команду в обратные кавычки (`) вместо апостофов (').
Во-вторых, команда должна возвращать MRTG 4 строки вывода:External Monitoring Scripts
If you want to monitor something which does not provide data via snmp you can use some external program to do the data gathering.
The external command must return 4 lines of output:
Line 1
current state of the first variable, normally 'incoming bytes count'
Line 2current state of the second variable, normally 'outgoing bytes count'
Line 3string (in any human readable format), telling the uptime of the target.
Line 4string, telling the name of the target.
в-третьих, всё-таки лучше разобраться и использовать mrtg-ping-probe, который именно для этого хорошие люди и написали.
> в-третьих, всё-таки лучше разобраться и использовать mrtg-ping-probe, который именно
> для этого хорошие люди и написали.`ping -c 1 -t 1 192.168.1.6 | awk '{print \$7}' | grep %`
У меня вот так работает.