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

Исходное сообщение
"Проблема MRTG"

Отправлено Lazy_roma , 11-Дек-05 18:10 
   Народ огромная просьба,подскажите реально работающий скрипт для сбора статистики с интерфейса eth0. И передача этой статистики для отрисовки графика в  МРТГе без использования snmp. Перепробовал всё что удалось нати на этом форуме на эту тему. С утилитой cban когда указываю cban -i eth0 Отвечает мне илегал параметр. Пробовал запустить через конфиг (cban -i eth0 -m) в логе МРТГ оставляет тотже Илегал параметр :( Скажите есть хоть какой нють скрипт который реально будет рисовать графики :) А то сейчас МРТГ насколько я понимаю работает но загрузка 0 :)

Содержание

Сообщения в этом обсуждении
"Проблема MRTG"
Отправлено adil_18 , 11-Дек-05 18:55 
#!/bin/sh
/sbin/ipfw show 50 | /usr/bin/awk {'print $3'}
/sbin/ipfw show 51 | /usr/bin/awk {'print $3'}
echo '/usr/bin/uptime'
echo '/bin/hostname'
echo $ext_iface

Tolko doljno bit count ip from any ........


"Проблема MRTG"
Отправлено аццкое , 11-Дек-05 21:56 
>#!/bin/sh
>/sbin/ipfw show 50 | /usr/bin/awk {'print $3'}
>/sbin/ipfw show 51 | /usr/bin/awk {'print $3'}
>echo '/usr/bin/uptime'
>echo '/bin/hostname'
>echo $ext_iface
>
>Tolko doljno bit count ip from any ........


гражданин вы наверное не вкурсе что в линуксе нету такого фаервола как ipfw :)


"Проблема MRTG"
Отправлено Lazy_roma , 11-Дек-05 23:02 
>гражданин вы наверное не вкурсе что в линуксе нету такого фаервола как
>ipfw :)

Но суть проблемы это неменяет И она остается проблемой :) Может тогда через iptables можно зделать ? Только вопрос как ?:( Если кто знает подскажите! Если есть способ и без iptables излогайте, буду пробовать всё :)



"Проблема MRTG"
Отправлено PavelR , 12-Дек-05 07:53 
>>гражданин вы наверное не вкурсе что в линуксе нету такого фаервола как
>>ipfw :)
>
> Но суть проблемы это неменяет И она остается проблемой :) Может
>тогда через iptables можно зделать ? Только вопрос как ?:( Если
>кто знает подскажите! Если есть способ и без iptables излогайте, буду
>пробовать всё :)

Хотел найти готовый скриптик и выложить, но быстро не получилось :)
поэтому просто кидаю идею и накинутую реализацию. Работало в FreeBSD, в линуксе тоже вроде возможно.

идея проста - использование netstat

-bash-2.05b$ netstat -bI rl0
Name    Mtu Network       Address              Ipkts Ierrs     Ibytes    Opkts Oerrs     Obytes  Coll
rl0    1500 <Link#1>      00:05:5d:30:fa:3d  2809921     0 1696493591  2424998     0 1936080392     0
rl0    1500 212.192.122.2 clamav             2682935     - 1641076205  2419102     - 1902279615     -

можно написать чтото вроде:


#!/bin/sh
netstat -bI $1 |grep Link | awk {'print $7'}
netstat -bI $1 |grep Link | awk {'print $10'}
echo '/usr/bin/uptime'
echo $1


есть маленькие замечания:

1. были проблемы c ppp интерфейсами в плане того, что поле Address в выводе было незаполненным и awk 'сбивался'
2. можно считать отдельно по алиасу на интерфейсе
3. в чем разница между первой и второй строками в выводе netstat я особо не озадачивался, если честно :) Если ктото пояснит - буду рад.

PS: если это не сработает, то можно сделать парсинг вывода ifconfig на ту же тему.


"Проблема MRTG"
Отправлено Skif , 12-Дек-05 00:47 
http://www.opennet.me/base/sys/mrtg_install.txt.html

А вообще:

man cfgmaker
CFGMAKER(1)                          mrtg                          CFGMAKER(1)

NAME
       cfgmaker - Creates mrtg.cfg files (for mrtg-2.12.1)

SYNOPSIS
       cfgmaker [options] [community@]router [[options] [community@]router
       ...]

В самом начале показано как и что делается. Тем более у вас, насколько я понял стоит SNMPD


"Проблема MRTG"
Отправлено loukash , 12-Дек-05 09:29 
а я использую такой скриптик. наверняка можно сделат проще, по-этому не пинать.

#!/usr/bin/perl
$if=0;
$i=0;
open (IN, "</usr/local/mrtg-2/lib/mrtg2/eth.tr");
while (<IN>) {
(@rx_old[$i],@tx_old[$i]) = (/RX bytes:(\d+).*?TX bytes:(\d+)/);
$i++;
};
close (IN);
system ("/sbin/ifconfig |grep 'RX bytes' > /usr/local/mrtg-2/lib/mrtg2/eth.tr");
open (IN, "< /usr/local/mrtg-2/lib/mrtg2/eth.tr");
$i=0;
while (<IN>) {
(@rx[$i],@tx[$i]) = (/RX bytes:(\d+).*?TX bytes:(\d+)/);
#print "new:@rx[$i]\t@tx[$i]\n";
@rx[$i]=@rx[$i]-@rx_old[$i];
@tx[$i]=@tx[$i]-@tx_old[$i];
#print "@rx[$i]\n@tx[$i]\n";
$i++;
};
#print "@rx[@ARGV[0]]\n@tx[@ARGV[0]]\n";
@rx[$if]=@rx[$if]/300;
@tx[$if]=@tx[$if]/300;
print "@rx[$if]\n@tx[$if]\n0\nTraff eth0\n";
#print "@ARGV[0]\n";
#print "Traffic eth0\n"
close (IN);


"Проблема MRTG"
Отправлено bushi , 12-Дек-05 09:38 
Как вариант с использованием netstat -bin

#!/usr/bin/perl
system "netstat -bin|grep xl0 >>./0";
system "tr ' ' '\n'< ./0 > ./1";
system "rm ./0";
open(TRAFFIC,"./1");
@log=<TRAFFIC>;
close TRAFFIC;
$lines=@log;
for($i=0;$i<$lines;++$i)
{
if(@log[$i] ne "\n")
        {
        if(@log[$i] ne "")
                {
                @end[$i]=@log[$i];
                open(TEMP,">>./temp");
                print TEMP @end[$i];
                close TEMP;
                }
        }
}
system "rm ./1";
open(TEMP,"./temp");
@end=<TEMP>;
@dat[1]=@end[6];
close TEMP;
open(TEMP,"./temp");
@end=<TEMP>;
@dat[0]=@end[9];
close TEMP;
system "rm ./temp";
print @dat;
system "uptime >>/var/upt";
open(OPT,"/var/upt");
$upt=<OPT>;
close OPT;
print $upt;
print "Канал: FreeBSD Внешний интерфейс";


"Проблема MRTG"
Отправлено Skif , 12-Дек-05 10:47 
У вас так код перегружен вызовами system что думается какая разница, может лучше шелл использовать?
А если серьезно - проверьте свой код - слишком он ненадежный не в плане работоспособности, а безопасности. Если вы пользуете функцию system - то нужно постараться отказаться от двойных кавычек и стараться использовать прямые пути к софту иначе может иметь место подмена. особенно это чревато при вызрве  функций вида rm.

"Проблема MRTG"
Отправлено Lazy_roma , 13-Дек-05 19:02 
Ну всё как всегда по сценарию:) Ктото заводит тему для разгавора в качестве вопроса, а уже после неё идёт обсуждение своих проблем и высказиваний :) Радует что конешно общение касается хотябы косвенно (есть и по теме) тему которая посвящена в више описаном вопросе. Хотелось бы всётаки узнать если комуто несложно то выложите пжалуста реально работающий скрипт под Линукс! Зарание благодарен :)


"Проблема MRTG"
Отправлено Lisa , 14-Дек-05 09:33 
>

"Проблема MRTG"
Отправлено Xeon , 14-Дек-05 09:57 
>Хотелось бы всётаки узнать если комуто несложно то выложите пжалуста реально работающий скрипт
>под Линукс! Зарание благодарен :)


#!/bin/bash
/bin/grep "$1" /proc/net/dev |/bin/awk -F ":" ' {print $2 }' |
/bin/awk '{print $1 "\n" $9}'
echo $1


"Проблема MRTG"
Отправлено Lazy_roma , 16-Дек-05 13:43 
Огромная благодарность всем тем кто помогал мне в этом, уже простом деле как настройка МРТГ. Особое спасибо Xeon за его маленький несмышлённый скрипт который приносить больше пользы чем сам весит вцелом :) Ещё раз огромное спасибо !!! Всё работает :)



"Проблема MRTG"
Отправлено Xeon , 16-Дек-05 13:56 
> Огромная благодарность всем тем кто помогал мне в этом, уже простом
>деле как настройка МРТГ. Особое спасибо Xeon за его маленький несмышлённый
>скрипт который приносить больше пользы чем сам весит вцелом :) Ещё
>раз огромное спасибо !!! Всё работает :)


За несмышленый ответишь! :)