From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Message-ID: <42A81682.8090003@solin.spb.ru> Date: Thu, 09 Jun 2005 14:14:26 +0400 From: "Aleksey Avdeev" User-Agent: Mozilla/5.0 (X11; U; Linux i686; ru-RU; rv:1.7.2) Gecko/20040808 X-Accept-Language: ru, be, uk, en-us, en MIME-Version: 1.0 To: community@altlinux.ru Subject: Re: [Comm] =?KOI8-R?Q?=EE=C1=D3=D4=D2=CF=CA=CB=C1_NetAms?= References: <427B533E.9060200@elan.com.ua> <427B6E6D.1070504@solin.spb.ru> In-Reply-To: <427B6E6D.1070504@solin.spb.ru> X-Enigmail-Version: 0.85.0.0 X-Enigmail-Supports: pgp-inline, pgp-mime Content-Type: multipart/mixed; boundary="------------060502000804040106020205" X-BeenThere: community@altlinux.ru X-Mailman-Version: 2.1.5 Precedence: list Reply-To: community@altlinux.ru List-Id: Mailing list for ALT Linux users List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 09 Jun 2005 10:14:33 -0000 Archived-At: List-Archive: List-Post: This is a multi-part message in MIME format. --------------060502000804040106020205 Content-Type: text/plain; charset=KOI8-R; format=flowed Content-Transfer-Encoding: 8bit Здравствуйте. Aleksey Avdeev пишет: > Slava Dubrovskiy пишет: > >> Здравствуйте >> >> Вот пытаюсь настроить учет трафика использования инета в сумме и для >> каждого компьютера внутренней сети. >> Настроен DHCP с DDNS. Я хочу считать трафик по каждому IP в локальной >> сети. >> Как я понял из документации, для этого надо в секции processor описать >> все unit типа host с IP адресом: >> >> service processor >> policy acct name all-ip target ip >> unit host name HOST1 oid 0246E8 ip 192.168.0.1 >> Но ведь IP выдается динамически. Как быть в такой ситуации? >> > > Варианты: > ... > > 2. Скрипт согласующий текущее состояние зоны с NetAms, запускаемый по cron. > Скрипт, прилагаемый к письму, достаточно сырой (всё руки не дойдут причесать :-() но используется у меня уже больше месяца. Расчитан на netams-3.1.1829-alt1.1. Задача им решаемая: 1. Считать трафик по хостам, разрешая их по именам. 2. Смена ip у unit host, при изменении информации в DNS, добавление новых хостов (скрипт вызывается по cron). 3. В случаи конфликта по ip между существующим unit host и содержимыми зоны - unit host присваивается ip из несуществующий подсети (192.168.10.0/16). PS: Перед использованием необходимо прописать правильное имя зоны. -- С уважением. Алексей. --------------060502000804040106020205 Content-Type: application/x-sh; name="netams_autounit.sh" Content-Transfer-Encoding: 8bit Content-Disposition: inline; filename="netams_autounit.sh" #! /bin/sh DIR="/var/local/lib/netams" ZONA=<зона> CAT="/bin/cat" TELNET="/usr/bin/telnet" SLEEP="/bin/sleep" FGREP="/bin/fgrep" GREP="/bin/grep" CUT="/bin/cut" SORT="/bin/sort" CMP="/usr/bin/cmp" MV="/bin/mv" JOIN="/usr/bin/join" SED="/bin/sed" SERVICE="/sbin/service" RM="/bin/rm" PS="/bin/ps" NETAMSCTL="/usr/sbin/netamsctl" DIG="/usr/bin/dig" DIFF="/usr/bin/diff" AWK="/bin/awk" MKTEMP="/bin/mktemp" RM="/bin/rm" # Проверка запуска. if ! $PS -C netams|$FGREP -q 'netams'; then echo "No run netams!" exit fi cd $DIR # Сравнение с придыдущим $MV -f dns.new dns.old 2>/dev/null || : $DIG $ZONA AXFR | \ $AWK '($3 == "IN") && ($4 == "A") && ($5 != "192.168.0.1") { split($1, ip, ".") print tolower(ip[1]) "|" $5}' | \ $SORT > dns.new if $DIFF -qiEbB dns.old dns.new 2>/dev/null 1>/dev/null ; then # echo No 1 exit fi #echo Yes 1 # tmp TMPDIR=`$MKTEMP -d "/tmp/netams_autounit.XXXXXXXXXX"` trap "$RM -rf $TMPDIR" 0 1 2 3 15 $CUT -d"|" -s -f 1 dns.new > $TMPDIR/name.dns 2>/dev/null & $CUT -d"|" -s -f 2 dns.new > $TMPDIR/ip.dns 2>/dev/null & wait $NETAMSCTL "show units" | \ $CUT -d'|' -s -f 1,3,7 | \ $AWK '($1 == "host") && ($6 ~ "192.168.0.[0-9]*" ) { print $3 "|" $6 }' > $TMPDIR/netams.old ( $FGREP -v -f $TMPDIR/name.dns $TMPDIR/netams.old | \ $FGREP -f $TMPDIR/ip.dns | \ $SED 's/192\.168\.0\./192.168.10./' $FGREP -v -f $TMPDIR/netams.old dns.new ) > $TMPDIR/netams.set if test ! -s $TMPDIR/netams.set ; then # echo No 2 $RM -rf $TMPDIR exit fi #echo Yes 2 # Изменения конфига . /etc/.netamsctl.rc ( echo $SLEEP 2 echo "$login" echo "$password" echo echo "service processor 0" $AWK 'BEGIN { FS = "|" } { print "unit host name " $1 " ip " $2 " ds-list 2 parent lanhosts acct-policy all-www all-ip"}' \ $TMPDIR/netams.set echo echo echo "save" $SLEEP 5 echo "exit" ) | \ $TELNET $host $port 2>/dev/null >/dev/null $RM -rf $TMPDIR exit --------------060502000804040106020205--