URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID1
Нить номер: 90690
[ Назад ]

Исходное сообщение
"MRTG с обычным '/sbin/ping'-ом на FreeBSD 8.0"

Отправлено tikohajan , 07-Янв-11 23:04 
Доброго времени суток. Вот такая задача у меня:
Хочу, чтоб графиками 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#

ПОЧЕМУ :-<(

Заранее благодарю.


Содержание

Сообщения в этом обсуждении
"MRTG с обычным '/sbin/ping'-ом на FreeBSD 8.0"
Отправлено Аноним , 08-Янв-11 06:00 
смотрите на строку очень внимательно:
Target[192.168.1.6_loss]:  '/sbin/ping -c 1 -t 1 192.168.1.6 | awk '{print $7}' | grep %'

подсказка: кавычки


"MRTG с обычным '/sbin/ping'-ом на FreeBSD 8.0"
Отправлено tikohajan , 08-Янв-11 09:54 
> смотрите на строку очень внимательно:
> Target[192.168.1.6_loss]:  '/sbin/ping -c 1 -t 1 192.168.1.6 | awk '{print $7}'
> | grep %'
> подсказка: кавычки

Ах да, понял я, спасибо. Но как можно избегать ковычек, или как можно решить проблему?


"MRTG с обычным '/sbin/ping'-ом на FreeBSD 8.0"
Отправлено Аноним , 08-Янв-11 12:15 
>> смотрите на строку очень внимательно:
>> 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 %"
эксперементировать надо.


"MRTG с обычным '/sbin/ping'-ом на FreeBSD 8.0"
Отправлено tikohajan , 08-Янв-11 13:04 
>[оверквотинг удален]
>>> подсказка: кавычки
>> Ах да, понял я, спасибо. Но как можно избегать ковычек, или как
>> можно решить проблему?
> может быть так заработает:
> 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 с обычным '/sbin/ping'-ом на FreeBSD 8.0"
Отправлено orangeant , 08-Янв-11 15:17 
Во-первых, надо заключать команду в обратные кавычки (`) вместо апостофов (').
Во-вторых, команда должна возвращать 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 2

current state of the second variable, normally 'outgoing bytes count'
Line 3

string (in any human readable format), telling the uptime of the target.
Line 4

string, telling the name of the target.


"MRTG с обычным '/sbin/ping'-ом на FreeBSD 8.0"
Отправлено orangeant , 08-Янв-11 15:42 
в-третьих, всё-таки лучше разобраться и использовать mrtg-ping-probe, который именно для этого хорошие люди и написали.

"MRTG с обычным '/sbin/ping'-ом на FreeBSD 8.0"
Отправлено Hammer , 12-Янв-11 12:51 
> в-третьих, всё-таки лучше разобраться и использовать mrtg-ping-probe, который именно
> для этого хорошие люди и написали.

`ping -c 1 -t 1 192.168.1.6 | awk '{print \$7}' | grep %`
У меня вот так работает.