[Comm] mrtg iptables script (was: хочу знать что творится с каналами связи)

Michael Shigorin =?iso-8859-1?q?mike_=CE=C1_osdn=2Eorg=2Eua?=
Вс Дек 4 18:47:49 MSK 2005


On Sat, Dec 03, 2005 at 02:02:27PM +0500, PEGAS TOUR - DMITRIY wrote:
> пользуюсь ifconfig, mailq, route =) хотелось бы видеть загрузку
> каналов - можно не в реальном времени. (люблю всякие графики =)
> статистику по тому кто куда и что.  К каким программным
> продуктам обратиться?

mrtg -- графики, iftop, ifstat, ntop, dstat -- в реальном времени.

Для mrtg потребуется нарисовать и подцепить (например, через
iptables) сенсор, ну или поднимать локальный snmpd и снимать 
по интерфейсам (как по мне -- оверкилл).

Цепляю работающий вариант сенсора для iptables, только смотреть
в него глазами при создании счётных цепочек в iptables (или
подгонке под существующие) практически гарантированно придётся;
впрочем, это не страшно.  Зато гибко выходит.

2 abulava: я всё раскачивался этого потомка одной из двух
снималок с iptables из mrtg contrib/ в пакет добавить...
сделаешь? :)

-- 
 ---- WBR, Michael Shigorin <mike на altlinux.ru>
  ------ Linux.Kiev http://www.linux.kiev.ua/
----------- следующая часть -----------
#!/usr/bin/perl
# iptables-accounting .9
#
# Author: Vern Gill <vgill на technologist.com>
# Date: March 9, 2001
#
# Adapted from code used in ipchainacc
#
# ipchainacc 1.1.0
#
# Author: John Lange john на darkcore.net
# Date  : September 12, 2000
#
#
# The command takes one argument:
#     Argument: what filter do you want to view
# I.E. iptables-accounting filter
#      iptables-accounting nat
#
# Also, you can check bytes or packets. Check the $bytec below
# and the text above it for details
#
#   This command must return 4 lines of output:
#     Line 1 : current state of the 'incoming bytes counter'
#     Line 2 : current state of the 'outgoing bytes counter'
#     Line 3 : string, telling the uptime of the target.
#     Line 4 : string, telling the name of the target.
#
# To add more counters, just edit the commented out if lines
# below. For instance, to count the filter table and the
# INPUT chain, just change the elsif to filter, and the
# $inrule to INPUT
# Share and enjoy

# edit for your system

$iptables='/sbin/iptables';   # path to iptables
#$host=`/bin/hostname --fqdn`;  # local hostname (for information only)

$table = $ARGV[0];

if ( $table =~ /^filter/i ) {
        $inrule='FORWARD';
        $outrule='OUTPUT';
} elsif ( $table =~ /^nat/i ) {
        $inrule='PREROUTING';
        $outrule='POSTROUTING';
} elsif ( $table =~ /^mangle/i ) {
        $inrule='PREROUTING';
        $outrule='OUTPUT';
#} elsif ( $table =~ /^table-name-here/i ) {
#        $inrule='CHAIN-NAME-HERE';
#        $outrule='OTHER-CHAIN-NAME';
#} elsif ( $table =~ /^table-name-here/i ) {
#        $inrule='CHAIN-NAME-HERE';
#        $outrule='OTHER-CHAIN-NAME';
}

# --- now override them
$table = 'filter';
$inrule = 'internal-in';
$outrule = 'internal-out';

# What should we graph? packet counters = 4, bytes = 6
# If you used the ipchainacc script before and you want to keep counting
# packets, then set this to 4. If you would rather do the
# sensible thing and count bytes, then set this to 6. If you change
# from one to the other, then you should delete all the previous
# history since it will be meaningless.

# 0 / 1
$bytec=1;

## -- don't edit below here ----

# fetch the status from iptables
$_=`$iptables -t $table -L $inrule -v -n -x | grep RETURN`;
@in_bytes = split;

$_=`$iptables -t $table -L $outrule -v -n -x | grep RETURN`;
@out_bytes = split;

# uptime of the machine
open(UPTIME,"uptime |");
$upTime=<UPTIME>;
close(UPTIME);
chop $upTime;

# example showing users number -- off, of course
#$upTime =~ s/^.*up ([0-9 a-z]+),( )+([0-9]+ user(s)?), .*$/\1 (\3)/;
$upTime =~ s/^.*up ([0-9:, a-z]+),( )+([0-9]+ user(s)?), .*$/\1/;

$host = 'ftp.linux.kiev.ua';

# 4 lines of output only.
printf "$in_bytes[$bytec]\n$out_bytes[$bytec]\n$upTime\n$host";
----------- следующая часть -----------
Было удалено вложение не в текстовом формате...
Имя     : =?iso-8859-1?q?=CF=D4=D3=D5=D4=D3=D4=D7=D5=C5=D4?=
Тип     : application/pgp-signature
Размер  : 189 байтов
Описание: =?iso-8859-1?q?=CF=D4=D3=D5=D4=D3=D4=D7=D5=C5=D4?=
Url     : <http://lists.altlinux.org/pipermail/community/attachments/20051204/d621f5b8/attachment-0003.bin>


Подробная информация о списке рассылки community