Титла: Избор на най-удобно решение Публикувано от: PAIN1 в Jan 08, 2006, 18:15 Така, захванах се да си направя която да следи трафика на няколко ип-та.Що се отнася до iptables нещата са направени.
Общата идея е да изкарам в txt нужната информация, тя да се обработи от съответна програма или скрипт (които да напиша) и да се вкара във mysql база данни или в отделен файл който друг скрипт да вкара в база данни. Имам опит със C/C++ , с нея мога да обработя файла, но не знам как да вържа C-то със mysql ... Дали Perl няма да е по-удобен? но ще трябва да чета за него ..... Имам спомен че серия от правила можеха да се импортват в mysql без никакъв скрипт, в смисъл само с едно mysql << .... но не помня точно синтаксиса. Само идеи искам и може би насока, искам сам да си напиша всичко. Титла: Избор на най-удобно решение Публикувано от: в Jan 08, 2006, 21:11 Ако искаш със C++ - http://tangentsoft.net/mysql++/
Ако искаш с C - http://dev.mysql.com/doc/refman/5.0/en/c.html Happy hacking ![]() Титла: Избор на най-удобно решение Публикувано от: VladSun в Jan 09, 2006, 01:05 Веднага ще ти кажа, че когато се отнася до обработка на текстова информация Perl е сред челните фаворити за това
![]() В твоя случай обаче, надали изобщо ще ти трябва толкова мощно нещо като Perl ![]() Аз също ползвам MRTG, но на отдалечена машина от тази, от която дърпам данните на iptables. Данните ги прехвърлям чрез txt файл ![]() Ето ти малко сорс ![]() На локалната машина:
на отдалечената
Това го изпълнявам на всеки 5 мин ![]() От този сорс можеш да видиш както как дърпам данните от iptables в по-подходящ формат, така и как ги "бутам" в mysql таблица ![]() Титла: Избор на най-удобно решение Публикувано от: PAIN1 в Jan 09, 2006, 01:32 VladSun пък да ти кажа как почти нищо не разбрах
![]() баш скриптинга дори не съм го поглеждал. Значи то ще е...... а какъв формат трябва да има файла за да се импортнет информяцията в sql-a ? Другото ще го оправя все някак ? Титла: Избор на най-удобно решение Публикувано от: VladSun в Jan 09, 2006, 04:19 1.
![]() Начин да запишеш инфото от броячите на iptables във файл (текстов): iptables -t mangle -L -nxvZ BG_CHAIN | grep MARK | grep -v " 0 MARK" | awk {'print $2" "$8" "$9" "'} > /var/mrtg/BGtraf.dat , или по друг начин - вземи изхода на iptables за CHAIN BG_CHAIN, вземи само тези, които са маркирани, махни тези които имат трафик 0, изкарай само 2, 8 и 9 поле (брояч байтове, src IP, dst IP) Получаваш текстов файл с разделител шпация. 2. ![]() Стандартни SQL заявки ![]()
mysql -е "sql" :изпълнява SQL заявката sql; load data local infile '/traf.tmp' into table traffic.traffic_bg; : SQL заявка, която казва "зареди данните от външно разположен файл /traf.tmp в таблицата traffic.traffic_bg Таблицата ти трябва да има полета такива, че да съответстват на полетата във текстовия файл - в случая, който съ показал в предния пост - BIGINT (байтове), CHAR(15) (src_IP), CHAR(15) (dst_ip), DATETIME (кога е засечено) Титла: Избор на най-удобно решение Публикувано от: PAIN1 в Jan 09, 2006, 09:17 Мерси много, определено решението с bash е в пъти по-елементарно, ше взема да го понауча.
Титла: Избор на най-удобно решение Публикувано от: в Jan 09, 2006, 23:17 ![]() Само едно уточнение: safe_mysqld --user=mysql_усер --local-infile=1 & local-infile опцията трябва да се разреши при стартирането на mysql за да можеш да "импортваш" външни файлове Титла: Избор на най-удобно решение Публикувано от: PAIN1 в Jan 10, 2006, 00:14 М да казваше ми че версията ми не го подържала и аз си написах програма на C , беше достатъчно кратка и решава проблема напълно като създава sql файл.
Само друго да те питам. Така като на всеки 5мин трупаш запис, таблицата в един момент става отвратително голяма, това до колко твари, бави и всякакви следствия ? Титла: Избор на най-удобно решение Публикувано от: в Jan 10, 2006, 01:57 ![]() А и аз го използвам за други цели ![]() За теб по-подходящо би било използването на RRD база данни - виж http://people.ee.ethz.ch/~oetiker/webtools/rrdtool/ за подробности. Иначе винаги можеш да си направиш нещо подобно в Mysql таблици - за деня през 5мин, за седмицата през 1/2 час и т.н. Това вече е игра на SQL заявки ... Аз само ти показах начин за импортване на данните от iptables към mysql ![]() От там нататък си ти ![]() Титла: Избор на най-удобно решение Публикувано от: PAIN1 в Jan 10, 2006, 11:00 Да мерси, най-вероятно статистиките няма да са подробни и старит записи ще се трият
![]() |