Мне понравился данный скрипт и я добавил в него маленький хак,вывод syslog'а роутера.
А в rrdtool2.sh можно как то это прописать? что бы страничка index.cgi сама уже уже формировалась для облегчения повторяемости другими?
Думал, но пока не дошло куда это вставить....
После
вставитьPHP Code:
if [ ! -f "${cgi}/index.cgi" ] || [ "{$1}" = "{$up_cgi}" ]
then
echo " cgi script does not exist.....Creating Now...."
index="${cgi}/index.cgi"
echo "#!/bin/sh" > "${index}"
PHP Code:
echo "if $REMOTE_ADDR = "192.168.1.2" " > "${index}"
echo 'run_time=`cat /proc/uptime | awk '\''{print $1}'\''`' >> "${index}"
echo 'cnt="<center>"' >> "${index}"
echo 'cnt_end="</center>"' >> "${index}"
#далее вырезано для сокращения до
echo 'echo "${run_time} sec."' >> "${index}"
echo 'echo "</BODY></HTML>"' >> "${index}"
echo "else" > "${index}"
echo 'run_time=`cat /proc/uptime | awk '\''{print $1}'\''`' >> "${index}"
echo 'cnt="<center>"' >> "${index}"
#тут копируем правленную страничку
echo 'echo "${run_time} sec."' >> "${index}"
echo 'echo "</BODY></HTML>"' >> "${index}"
echo "fi" > "${index}"
chmod +x "${index}"
fi
кажется что так..... поправьте если ошибаюсь....
Last edited by ThinkPad; 06-03-2009 at 09:50.
Автор благодарит алфавит за любезно предоставленные буквы.
Все вышесказанное только мое личное мнение. Если Вы с ним не согласны, что ж, это Ваше право. Я, например, зла никогда не помню, но хату спалить могу.
IBM ThinkPad X61 Tablet + WL500GP+ WL500 Deluxe
Мне понравился данный скрипт и я добавил в него маленький хак,вывод syslog'а роутера.
Выкладываю новый скрипт.
Добавлено: статистика по айпишникам.
Изменения: определения дня недели, спасибо dimmer-у.
Планируется: оптимизация скрипта (без всяких украшательств =) ) , трафик по портам и хочу прикрутить к веб-морде роута (на форуме где то видел упоминания)
Что нужно, чтобы работало: асусовский роут (желательно, с прошивкой от Олега), rrdtool, cron и голова на плечах + прямые руки .
По просьбе выкладываю подробную инструкцию
Установка и настройка:
1. Проверяем установлен ли rrdtool - ipkg list_installed | grep rrdtool. Если выдает, что то типа "rrdtool - 1.2.30-1 - Round-Robin Database tool. Database collator and plotter", значит установлен. Если нет, то ipkg install rrdtool. На счет крона все аналогично. На всякий случай проверьте, что бы был ipcalc - эта прога тоже необходима.
2. Далее создаем папку, где будет все храниться, например, mk /opt/traffic - далее в описании использую именно этот путь.
3. Распаковываем архив (gzip -d rrd.sh.gz) и редактируем:
RRDDATA=/opt/traffic - полный путь до созданной директории, в ней будут лежать все базы и сам скрипт.
RRDIMG=/opt/traffic/www - здесь храниться все необходимое, для веб-сервера (картинки и директория со скриптами).
4. Делаем его исполняемым: chmod +x /opt/traffic/rrd.sh
5. Запускаем 1-ый раз скрипт. Если прописано все верно, то в исходной папке будут созданы следующие файлы: eth*.rrd, cpu.rrd, mem.rrd, ip.list и директория WWW, в ней еще одна - cgi-bin, а в ней 2-а скрипта: index.cgi и update (эти 2 файла должны быть исполняемыми).
5. Теперь если статистика по ip-ам Вас не интересует пропускаете этот пункт. Для остальных: открываем файлик "ip.list" (например, vi /opt/traffic/ip.list) и прописываете те ip, которые хотим мониторить (скрипт поддерживает и подсети (запись вида ip/mask или ip/prefix). Порядок ip-шников не важен. Теперь маленькое отступление: цепочки ставятся 2-ми в цепочке "FORWARD" за правилом "-A FORWARD -i br0 -o br0 -j ACCEPT" - чтобы не считать внутрисетевой трафик. И так, запускам еще раз скрипт и проверяем создались ли файлы вида [ip/mask].rrd и необходимые правила в iptables (например, так "iptables -L | grep in_traffic"). Должны быть две цепочки "in_traffic" и "out_traffic" и правила в них, вида "-A in_traffic -d [ip/mask]" и "-A out_traffic -s [ip/mask]".
6. Прописываем в cron на выполнение каждые 5мин. - это важно, иначе неверно считать будет суммарный трафик. Это можно сделать как написано в большинстве руководств или как у меня - после установки крона он автоматически создает файл расписания для текущего юзера - /opt/var/cron/crontabs/[user name], прописываем в него что-то типа "*/5 * * * * /opt/traffic/rrd.sh".
7. Теперь поднимаем вем-сервер, например, так: httpd -p 81 -h /opt/traffic/www (81 - это порт, при обращении к которому бубут доступные те данные, ради которых все это и затеяно . Можно еще к этой команде добавить "-c /opt/traffic/httpd.conf", где httpd.conf - конфигурационный файл, в нем у меня прописано ip для доступа, делается это так:
#Allows hosts
A:127.0.0. #Allow loopback connection
A:192.168.2. #Allow any address that begins with 192.168.2.
D:* #Deny from other IP connections
8. Проверяем в браузере: http://router_ip:81, должна появиться страничка с надписью "Hi!" ))
Картинок изначально нет, их нужно создать: преходим, например, на "CPU & Memory" и жмем кнопку в правом верхнем углу "Update data". Если браузер у Вас настроен на отображение данных по мере загрузки, то увидите, что пишет rrdtool при создании картинок ). Жмем кнопку "Back". Если картинки не появились, просто обновите страницу.
Теперь о насущном: про ограничение доступа к инфе уже было сказано - можно либо скрипт подточить, либо по конфигу веб-сервера, имхо последнее проше и удобней. Генерация всех картинок скопом - это было реализовано изначально, хотите положить роут, минут так на 5, то набирите http://ip_router/cgi-bin/update?update_graphs - будут обновлены все картинки. По поводу того, что не обновляются картинки - еще в исходном скрипте добавил строчку "<meta http-equiv=cache-control content=no-cache, no-store, must-revalidate>", которая по идее должна обновлять, но обновление идет, только если изменился размер файла картинки ((, побороть пока не смог. Не спец по html-ю, просьба если кто разбирается, скажите, что должно быть, что бы картинка при возврате гарантированно обновлялась).
Пока все, всем спасибо, в особенности dimmer-у.
Last edited by A007; 10-03-2009 at 23:57.
По обновлению картинки, попробуй поиграться ещё с такими параметрами:
<META HTTP-EQUIV="PRAGMA" CONTENT="NO-CACHE">
<META HTTP-EQUIV="EXPIRES" CONTENT="Mon, 22 Jul 2002 11:12:01 GMT">
Дату поставить в прошлом.
Взято с _http://www.i18nguy.com/markup/metatags.html
mkdir2. Далее создаем папку, где будет все храниться, например, mk /opt/traffic
а после перезагрузки он как подымется?7. Теперь поднимаем вем-сервер, например, так: httpd -p 81 -h /opt/traffic/www (81 - это порт, при о
Минут 30 втыкал. Короче не инструкция, а бред. Автору сложно потратить 30 минут и ВНЯТНО изложить материал.
Добавлено после.
Опечатка с update.cgi, который превратился просто в update. Просто нема слов.
Поставил благодаря этому и своим мозгам.
Не понимаю зачем Update data. Неужели раз в пять минут это будет так уж сильно грузить роутер.
В index.cgi нужно ввести какую то переменную потому что URL идут в корень WWW, и если добавляем в Lighttpd (www/rrd), то приходиться править все вручную:
echo "<a href=/rrd/cgi-bin/index.cgi?cpu_mem>CPU & Memory</a><br>"
if [ "$tab" == "" ] & [ "$graph3" != "" ]
then
tab="<img src=/rrd/${graph1}.png><br><img src=/rrd/${graph2}.png><br><img src=/rrd/${graph3}.png>"
fi
Last edited by leshiy_odessa; 09-03-2009 at 00:16.
представь себе пики раз в 5 мин (актуальность 5 мин, вместо той что создается при нажатии кнопки) сильно грузит роутер и на долго, причем пиком что негативно сказывается на риалтайм сервисах и VPN тунелях что я например использую.
и инструкция хорошая просто опечатки есть всегда, не надо так ревниво относиться к труду других людей.
Дописать в /opt/etc/init.d/S* команду думаю многие смогут.что указали вы молодец но лучше напишите что на ваш взгляд и главное КАК нужно добавить/доработать
Last edited by lagshmi; 09-03-2009 at 20:22.
В актуальности поддерживаю полностью. У меня идея сделать по тому же принципу что и у vnStat когда на страницу заходишь она (картинка) обновляется.
wl500gp-1.9.2.7-d-r1222 + StoreJet 35 Ultra >>> rtorrent+rutorrent -|- lighhtpd + ssl + auth -|- vnStat + vnStat PHP frontend -|- vsftpd -|- squid + lightsquid...
полностью поддерживаю. тоже хочу, но пока руки не доходятпо тому же принципу что и у vnStat когда на страницу заходишь она (картинка) обновляется
Спасибо, за скрипт. Да, подправить кое-что приходится. Но что-то у меня с IP ничего не выходит. Добавлял два варианта 192.168.1.1/24 и 192.168.1.1/255.255.255.0, в обоих случаях выдает:
Создается файл Unknown_Unknown.rrd и 192.168.1.0_255.255.255.0.rrd. Картинки тоже, соответственно, Unknown_Unknown_*.pngCode:iptables v1.2.7a: invalid mask `Unknown' specified Try `iptables -h' or 'iptables --help' for more information. iptables v1.2.7a: invalid mask `Unknown' specified Try `iptables -h' or 'iptables --help' for more information. iptables v1.2.7a: invalid mask `Unknown' specified Try `iptables -h' or 'iptables --help' for more information. iptables v1.2.7a: invalid mask `Unknown' specified Try `iptables -h' or 'iptables --help' for more information. iptables v1.2.7a: invalid mask `Unknown' specified Try `iptables -h' or 'iptables --help' for more information. iptables v1.2.7a: invalid mask `Unknown' specified Try `iptables -h' or 'iptables --help' for more information. iptables v1.2.7a: invalid mask `Unknown' specified Try `iptables -h' or 'iptables --help' for more information. iptables v1.2.7a: invalid mask `Unknown' specified Try `iptables -h' or 'iptables --help' for more information.
iptables -L | grep in_traffic выдает:
Как лечить?Code:in_traffic all -- anywhere anywhere
Автор благодарит алфавит за любезно предоставленные буквы.
Все вышесказанное только мое личное мнение. Если Вы с ним не согласны, что ж, это Ваше право. Я, например, зла никогда не помню, но хату спалить могу.
IBM ThinkPad X61 Tablet + WL500GP+ WL500 Deluxe
Очень странно, во всяком случае при одной записи в файлике ip.list будет выдавать одно сообщение iptables, а файлик вида "Unknown_Unknown" говорит вероятно о неправильной кодировке.
Рекомендую заново его создать (ip.list) и в редакторе, например vi редактировать.
Если не поможет, выложите, плз, свой ip.list. Посмотрю, что нужно подправить.
С редактированием проблем нет, все сохранял в UNIX кодировке, данные (повторюсь) вводил:
либо:Code:192.168.1.1/255.255.255.0 192.168.1.2/255.255.255.0 192.168.1.3/255.255.255.0 192.168.1.4/255.255.255.0
Сегодня попробовал одни айпишники (ip.lst приложил):Code:192.168.1.1/24 192.168.1.2/24 192.168.1.3/24 192.168.1.4/24
В результате появились четыре файла с айпишниками, однако не с той подсетью (должно быть 255.255.255.0):Code:192.168.1.1 192.168.1.2 192.168.1.3 192.168.1.4
iptables -L | grep in_traffic по прежнему выдает:Code:192.168.1.1_255.255.255.255.rrd 192.168.1.2_255.255.255.255.rrd 192.168.1.3_255.255.255.255.rrd 192.168.1.4_255.255.255.255.rrd
Картинки для айпи вообще не создаются. update_graphs создал следующее:Code:in_traffic all -- anywhere anywhere Chain in_traffic (1 references)
В лог по поводу айпи ничего не пишет, но не знаю, должн ли?Code:Start update.. Wed Mar 11 06:01:28 MSK 2009 Create started... WAN Interface: vlan1 LAN Interface: vlan0 WLAN Interface: eth1 Daily Graphs created..... 647x333 647x333 647x333 Weekly Graphs created..... 647x333 647x333 647x333 Monthly Graphs Created.... 647x333 647x333 647x333 Yearly Graphs Created.... 647x333 647x333 647x333 Daily Graphs created..... 647x333 647x333 647x333 Weekly Graphs created..... 647x333 647x333 647x333 Monthly Graphs created..... 647x333 647x333 647x333 Yearly Graphs created..... 647x333 647x333 647x333 CPU usage created..... 647x389 Memory usage created..... 647x375 IPs graphs created..... <-------------------------------------------------------------> Go back
Что посоветуете?
В лог ничего не пишет.
Маленькое уточнение, если вводите отдельный ip, то и мониторится будет этот ип, если подсеть - то подсеть, это к вопросуСкопировал Ваш вайлик к себе на роут, все работает.В результате появились четыре файла с айпишниками, однако не с той подсетью (должно быть 255.255.255.0)
Файлы данных у Вас создаются, значит и правила должны быть, на всякий случай проверьте так:должно вывести следующееCode:iptables -L in_traffic
Если правила есть, то проблема с картинками связана с функцией CreateGraphIP () - в какой то из строчек пропущен знак "\" (кроме последних 2-х строк).Code:all -- anywhere 192.168.1.1 all -- anywhere 192.168.1.2 all -- anywhere 192.168.1.3 all -- anywhere 192.168.1.4
Last edited by A007; 11-03-2009 at 10:49.
Что-то я совсем запутался. Если, при прописанных ip в ip.lst, вручную запустить sh rrd.sh то создается файл Unknown_Unknown.rrd и выпадает следующее сообщение:
Если запустить cron с содержимым:Code:Wed Mar 11 18:03:30 MSK 2009 Create started... WAN Interface: vlan1 LAN Interface: vlan0 WLAN Interface: eth1 WAN -> in: 302576360 out: 2486910080 LAN -> in: 2300985512 out: 298696151 WLAN -> in: 767076 out: 3869963 iptables v1.2.7a: invalid mask `Unknown' specified Try `iptables -h' or 'iptables --help' for more information. iptables v1.2.7a: invalid mask `Unknown' specified Try `iptables -h' or 'iptables --help' for more information. iptables v1.2.7a: invalid mask `Unknown' specified Try `iptables -h' or 'iptables --help' for more information. iptables v1.2.7a: invalid mask `Unknown' specified Try `iptables -h' or 'iptables --help' for more information. iptables v1.2.7a: invalid mask `Unknown' specified Try `iptables -h' or 'iptables --help' for more information. iptables v1.2.7a: invalid mask `Unknown' specified Try `iptables -h' or 'iptables --help' for more information. iptables v1.2.7a: invalid mask `Unknown' specified Try `iptables -h' or 'iptables --help' for more information. iptables v1.2.7a: invalid mask `Unknown' specified Try `iptables -h' or 'iptables --help' for more information.
То создаются файлы:Code:#!/bin/sh /opt/traffic/rrd.sh
iptables -L in_traffic:Code:192.168.1.1_255.255.255.255.rrd 192.168.1.2_255.255.255.255.rrd 192.168.1.3_255.255.255.255.rrd 192.168.1.4_255.255.255.255.rrd
Однако картинок нет. С CreateGraphIP () все в порядке, вроде:Chain in_traffic (1 references)
target prot opt source destination
all -- anywhere WL-001E8C3E0826
all -- anywhere 192.168.1.2
all -- anywhere 192.168.1.3
all -- anywhere 192.168.1.4
И еще вопрос, в index.cgi, ссылки на графики идут без /rrd/, соответственно приходится править, иначе не показываются. Что нужно подправить, в rrd.sh, что бы при создании index.cgi пути в нем были верными?Code:CreateGraphIP () { /opt/bin/rrdtool graph "${1}.new" -a PNG -R light -s -"${2}" -w 410 -h 100 -v "bytes/s" -l 0 --font DEFAULT:7 \ 'DEF:ds1='${3}':in:AVERAGE' \ 'DEF:ds2='${3}':out:AVERAGE' \ 'VDEF:sum_in=ds1,TOTAL' \ 'VDEF:sum_out=ds2,TOTAL' \ 'LINE1:ds1#00FF00:In' \ GPRINT:ds1:MAX:"Max %6.2lf%s" \ GPRINT:ds1:MIN:"Min %6.2lf%s" \ GPRINT:ds1:AVERAGE:"Avg %6.2lf%s" \ GPRINT:ds1:LAST:"Cur %6.2lf%s" \ GPRINT:sum_in:"Total %6.2lf%s\n" \ 'LINE1:ds2#0000FF:Out' \ GPRINT:ds2:MAX:"Max %6.2lf%s" \ GPRINT:ds2:MIN:"Min %6.2lf%s" \ GPRINT:ds2:AVERAGE:"Avg %6.2lf%s" \ GPRINT:ds2:LAST:"Cur %6.2lf%s" \ GPRINT:sum_out:"Total %6.2lf%s" \ -t "${4}" mv -f "${1}.new" "${1}" }