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

Исходное сообщение
"Народ! кому нужен скрипт на перле?"

Отправлено ERA , 01-Апр-03 05:41 
Долго роясь в инете и получая подзатыльники за вопрос как можно сделать скрипт а не прогу чтобы свободно снимать счетчики минуя БД...скидывать на файл....для выделенки ~128 кб/с сделал все же....думаю что то что надо!
кому надо мыльте ..скину скрипт с подробным объяснением или в форуме кину...

Содержание

Сообщения в этом обсуждении
"Народ! кому нужен скрипт на перле?"
Отправлено ERA , 01-Апр-03 06:48 
>Долго роясь в инете и получая подзатыльники за вопрос как можно сделать
>скрипт а не прогу чтобы свободно снимать счетчики минуя БД...скидывать на
>файл....для выделенки ~128 кб/с сделал все же....думаю что то что надо!
>
>кому надо мыльте ..скину скрипт с подробным объяснением или в форуме кину...
>
Абсолютно бесплатно..спояснениями....
1. значит лезешь в rc.firewall где лежат правила для твоего IPFW(если у тебя не ipfw  вопрос разу отваливается)
к примеру 100 add count tcp from ant to ${внешний ip} in via ${внешний интерфейс}
2. проверяешь...#: ipfw s 100 (команда для показа 100 правила..получаешь типа 00100 34 245 count tcp ......)
3.если все работает пишешт такой скрипт:
#! /usr/bin/perl
$file="/var/log/counts/allin.txt";
#затем открываешь файл
open FF, "<$file";
#обзываешь переменную для снятия содержимого файла
$s=<FF>;
close(FF);#закрываем файл для чтения
#затем приступаешь не посредственно к правилу(кавычки не простые как эти -> ' а #консольные ` (нажатие клавиши тильда (тама 'ё'  написанно)
$r1=`/sbin/ipfw s 100`;
#затем пилим полученные резальтат в массив через пробел(то есть все значения #разбиваются по пробелам
@s1=split(/ /,$r1);
#получаем элементы массива вида: нулевой 00100, первый 17, второй(он нас и #интересует) 1152 , третий count , ... tcp, ... from, ... any, .... to.....и т.д.
#тут есть одно но....когда счетчики равны 0 то все элементы строки идут через #пробел..поэтому проблем в снятии второго элемента массива нет.....но когда #счетчики становятся не нулевыми то почему то число пробелов между ними #достигает трех и далее....
#поэтому минуя тяжелые вычислении через условия этого второго счетчика я решил #посчитать все элементы масива и вычесть с конца кол-во элемнтов до счетчика  
#00100 17 1152 count tcp from xxx.xxx.xxx.xxx to any in recv ed0 получаем что 1152 будет #10 элементом с конца..... пишем
$i=@s1; #вычисляем все количество элементов
$z=$s1[$i-10];#находим в массиве счетчик как 10 элемент с конца
open FF, ">$file";#открыаем файл на чтение
$traff=$s+$z;#прибавляем к старой переменной (считанной раннее из файла) новую
print FF $traff; #перезаписываем счетчик в файле(миссия выполнена);
close(FF);#закрываем файл
$flush=`/sbin/ipfw z 100`;#Обнуляем счетчик
split(/ /, $flush);#Обнуляем счетчик


"Народ! кому нужен скрипт на перле?"
Отправлено ERA , 01-Апр-03 06:50 
>>Долго роясь в инете и получая подзатыльники за вопрос как можно сделать
>>скрипт а не прогу чтобы свободно снимать счетчики минуя БД...скидывать на
>>файл....для выделенки ~128 кб/с сделал все же....думаю что то что надо!
>>
>>кому надо мыльте ..скину скрипт с подробным объяснением или в форуме кину...
>>
>Абсолютно бесплатно..спояснениями....
>1. значит лезешь в rc.firewall где лежат правила для твоего IPFW(если у
>тебя не ipfw  вопрос разу отваливается)
>к примеру 100 add count tcp from ant to ${внешний ip} in
>via ${внешний интерфейс}
>2. проверяешь...#: ipfw s 100 (команда для показа 100 правила..получаешь типа 00100
>34 245 count tcp ......)
>3.если все работает пишешт такой скрипт:
>#! /usr/bin/perl
>$file="/var/log/counts/allin.txt";
>#затем открываешь файл
>open FF, "<$file";
>#обзываешь переменную для снятия содержимого файла
>$s=<FF>;
>close(FF);#закрываем файл для чтения
>#затем приступаешь не посредственно к правилу(кавычки не простые как эти -> ' а #консольные ` (нажатие клавиши тильда (тама 'ё'  написанно)
>$r1=`/sbin/ipfw s 100`;
>#затем пилим полученные резальтат в массив через пробел(то есть все значения #разбиваются
>по пробелам
>@s1=split(/ /,$r1);
>#получаем элементы массива вида: нулевой 00100, первый 17, второй(он нас и #интересует)
>1152 , третий count , ... tcp, ... from, ... any,
>.... to.....и т.д.
>#тут есть одно но....когда счетчики равны 0 то все элементы строки идут
>через #пробел..поэтому проблем в снятии второго элемента массива нет.....но когда #счетчики
>становятся не нулевыми то почему то число пробелов между ними #достигает
>трех и далее....
>#поэтому минуя тяжелые вычислении через условия этого второго счетчика я решил #посчитать
>все элементы масива и вычесть с конца кол-во элемнтов до счетчика
>
>#00100 17 1152 count tcp from xxx.xxx.xxx.xxx to any in recv ed0
>получаем что 1152 будет #10 элементом с конца..... пишем
>$i=@s1; #вычисляем все количество элементов
>$z=$s1[$i-10];#находим в массиве счетчик как 10 элемент с конца
>open FF, ">$file";#открыаем файл на чтение
>$traff=$s+$z;#прибавляем к старой переменной (считанной раннее из файла) новую
>print FF $traff; #перезаписываем счетчик в файле(миссия выполнена);
>close(FF);#закрываем файл
>$flush=`/sbin/ipfw z 100`;#Обнуляем счетчик
>split(/ /, $flush);#Обнуляем счетчик

в конце такая строчка//open FF, ">$file";#открыаем файл на чтение
ошибочка: не открываем файна чтение а открываем файл на запись


"Народ! кому нужен скрипт на перле?"
Отправлено dawnshade , 01-Апр-03 09:18 
Ради интереса, мерял скоко он у тя процессорного времени жрет хотя бы за неделю и на какой машине?

"Народ! кому нужен скрипт на перле?"
Отправлено ERA , 01-Апр-03 09:26 
>Ради интереса, мерял скоко он у тя процессорного времени жрет хотя бы
>за неделю и на какой машине?

подгружает но наскока не знаю....в любом случае не рекомендаю его пускать в кроне меньше чем через минуту..
да хрен знает тут сервак стоит пень 166 с 48 метрами оперативы
на нем прокся, мыло , файервол, антискан портов, счетчики, еще и sshd висит, апач с модулями пхп и перл....вроде работает..не замечал особо тормозов....выделенка 128 кб/сек..был бы Ethernet тут бы другие подходы были бы...


"Народ! кому нужен скрипт на перле?"
Отправлено ERA , 01-Апр-03 09:34 
>>Ради интереса, мерял скоко он у тя процессорного времени жрет хотя бы
>>за неделю и на какой машине?
>
>подгружает но наскока не знаю....в любом случае не рекомендаю его пускать в
>кроне меньше чем через минуту..
>да хрен знает тут сервак стоит пень 166 с 48 метрами оперативы
>
>на нем прокся, мыло , файервол, антискан портов, счетчики, еще и sshd
>висит, апач с модулями пхп и перл....вроде работает..не замечал особо тормозов....выделенка
>128 кб/сек..был бы Ethernet тут бы другие подходы были бы...

еще про логчек забыл и докторвэб для сендмайла ...и работает...консоль не лагает вроде


"Народ! кому нужен скрипт на перле?"
Отправлено Mironimus , 03-Апр-03 11:47 
>>>Ради интереса, мерял скоко он у тя процессорного времени жрет хотя бы
>>>за неделю и на какой машине?
>>
>>подгружает но наскока не знаю....в любом случае не рекомендаю его пускать в
>>кроне меньше чем через минуту..
>>да хрен знает тут сервак стоит пень 166 с 48 метрами оперативы
>>
>>на нем прокся, мыло , файервол, антискан портов, счетчики, еще и sshd
>>висит, апач с модулями пхп и перл....вроде работает..не замечал особо тормозов....выделенка
>>128 кб/сек..был бы Ethernet тут бы другие подходы были бы...
>
>еще про логчек забыл и докторвэб для сендмайла ...и работает...консоль не лагает
>вроде

ПРИКОЛЬНО