Прерывание сессий MPD5

Простые/общие вопросы по UNIX системам. Спросите здесь, если вы новичок

Модераторы: vadim64, terminus

Правила форума
Убедительная просьба юзать теги [cоde] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
anatoliy
проходил мимо
Сообщения: 7
Зарегистрирован: 2011-11-29 7:24:04

Прерывание сессий MPD5

Непрочитанное сообщение anatoliy » 2011-11-29 7:50:36

Приветствую все помогите решить проблему с прерыванием сессий MPD5 вот два скрипта мне нужно чтоб сессия прерывалась когда пользователь выкачает 3 GB в базе mysql в таблице radcheck я создал дополнительное поле trafinmb там записал 3000000000 мне нужно только входящий ограничивать также добавил в crontab задание для запуска скрипта но что-то не получается я не спец по этому прошу помогите, скрипты взял вот с этой статьи http://wiki.sysadmins.su/index.php/PPTP_VPN_сервер_на_FreeBSD ,
может есть проще решение чем это.

trafstat_kill.pl

Код: Выделить всё

#!/usr/local/bin/perl
use DBI;
$db_user="root";
$db_pass="pass";
$db_name = "radius";
$radcheck_table = "radcheck";
$radacct_table = "radacct";
$deny_script = "/bin/sh /home/cron/deny_ip.sh";
$mpd_console_ip = "127.0.0.1";
$mpd_console_port = "5005";
$mpd_console_login = "admin";
$mpd_console_passwd = "password";
my %in_lim, %in_traf;
$dbh = DBI->connect("dbi:mysql:dbname=" . $db_name, $db_user, $db_pass) or die "Cannot connect to DB server:" . $DBI::errstr . "\n";
# Reading limits
$sth = $dbh->prepare("select username, trafinmb from ".$radcheck_table);
$sth->execute();
while (($user, $in_l) = $sth->fetchrow_array()){
if($in_l != "") {$in_lim{$user} = $in_l;} else {$in_lim{$user} = 0;};
$in_traf{$user} = "0";
};

# Reading traffic info
$sth = $dbh->prepare("select username, acctoutputoctets from ".$radacct_table);
$sth->execute();

while (($user, $in) = $sth->fetchrow_array()){$in_traf{$user} += $in;};

# Incoming limits
for $key (sort(keys(%in_lim))){
	if (($in_lim{$key} >= 0) && ($in_traf{$key} >= $in_lim{$key})){
	system("$deny_script \"$key\" $mpd_console_ip $mpd_console_port \"$mpd_console_login\" \"$mpd_console_passwd\" > /dev/null 2>&1");
	};
};

# Close connection to the DB
$dbh->disconnect() or warn "Error disconnecting from DB: " . $DBI::errstr . "\n";

deny_ip.sh

Код: Выделить всё

#!/bin/sh
NAME="$1"	# username to block
MHOST="$2"	# mpd host
MPORT="$3"	# mpd telnet port
MLOGIN="$4"	# mpd console login
MPASSWD="$5"	# mpd console password

test -z "$NAME" && exit 1
test -z "$MHOST" && exit 1
test -z "$MPORT" && exit 1
test -z "$MLOGIN" && exit 1
test -z "$MPASSWD" && MPASSWD=""

for bundle in `/usr/bin/printf "${MLOGIN}\n${MPASSWD}\nbundle\nexit\n" | /usr/bin/nc $MHOST $MPORT | grep Opened | awk '{print $1}'`; do
	if /usr/bin/printf "${MLOGIN}\n${MPASSWD}\nbundle $bundle\nshow bund\nexit\n" | /usr/bin/nc $MHOST $MPORT | grep "\"${NAME}\"" > /dev/null 2>&1
	then
		/usr/bin/printf "${MLOGIN}\n${MPASSWD}\nbundle $bundle\nclose phys\nexit\n" | /usr/bin/nc $MHOST $MPORT >/dev/null 2>&1
	fi
	echo
done;
exit 0;
Последний раз редактировалось f_andrey 2011-11-29 8:16:52, всего редактировалось 1 раз.
Причина: Автору, выбирайте пожалуйста раздел соответствуюший тематике вашего сообщения.

Хостинговая компания Host-Food.ru
Хостинг HostFood.ru
 

Услуги хостинговой компании Host-Food.ru

Хостинг HostFood.ru

Тарифы на хостинг в России, от 12 рублей: https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/

anatoliy
проходил мимо
Сообщения: 7
Зарегистрирован: 2011-11-29 7:24:04

Re: Прерывание сессий MPD5

Непрочитанное сообщение anatoliy » 2011-11-29 12:19:20

Также готов заплатить 20 wmz за исправление моего скрипта до рабочего состояние.

Гость
проходил мимо

Re: Прерывание сессий MPD5

Непрочитанное сообщение Гость » 2011-11-29 15:36:03

куйня какая то
поставте abills и не партесь

anatoliy
проходил мимо
Сообщения: 7
Зарегистрирован: 2011-11-29 7:24:04

Re: Прерывание сессий MPD5

Непрочитанное сообщение anatoliy » 2011-12-01 8:57:59

Тема закрыта, все налажено, всем спасибо за такую помощь.