UTM5+cisco switch
UTM5+cisco switch
Здравствуйте.
Вопсчем вопрос такой.
Можно ли отключить на утм, чтоб он отключился на свиче.
Т.е.
Допустим я через админку отключаю пользователя за неуплату(ну или автоматически он отключается).И хочу чтобы на свиче тот порт к которому он подключен ушел в шутдаун.
Такое возможно? На циске есть управление через snmp. Возможно прикрутить утм к циске??
Ну или как реализовано в данном случае у вас?
Вопсчем вопрос такой.
Можно ли отключить на утм, чтоб он отключился на свиче.
Т.е.
Допустим я через админку отключаю пользователя за неуплату(ну или автоматически он отключается).И хочу чтобы на свиче тот порт к которому он подключен ушел в шутдаун.
Такое возможно? На циске есть управление через snmp. Возможно прикрутить утм к циске??
Ну или как реализовано в данном случае у вас?
Привет, нет ничего невозможного.
запилите скрипт
Вообщем скорее всего можно управлять вашим "cisco switch" через telnet, ssh, snmp ну а обернуть можете в bash, perl и тд. Создаетё правило а админке на отключение/включение абонента с передачей параметров. Ваш запиленный скрипт, берёт данные из предварительно подготовленной вами базы UTM (коммутатор, порт, юзер)
соединяется с коммутатором и делаем своё черное дело за Вас.
Вот как то так.
Тока вот закрыть всё это значит лишить юзера возможности оплаты услуг, что не есть гуд. Проще закрыть доступ на локальные ресурсы на l3 , создав скрипт который будет раз в час брать данные из базы утм на наличие юзеров с блокировкой 216 (если мне память не изменяет) потом поместить их в таблицу ipset а уже эту таблицу запихать в iptables ну или что там у вас....
запилите скрипт

соединяется с коммутатором и делаем своё черное дело за Вас.
Вот как то так.

Тока вот закрыть всё это значит лишить юзера возможности оплаты услуг, что не есть гуд. Проще закрыть доступ на локальные ресурсы на l3 , создав скрипт который будет раз в час брать данные из базы утм на наличие юзеров с блокировкой 216 (если мне память не изменяет) потом поместить их в таблицу ipset а уже эту таблицу запихать в iptables ну или что там у вас....
Последний раз редактировалось tail-n Ср фев 16, 2011 01:43, всего редактировалось 1 раз.
У меня нет аськи, вам надо железки засунуть в управляемую подсеть пока не поздно, а то замучаетесь.
Вот пример простого скрипта, который ищет юзера, если у юзера положительный баланс делает одно, иначе другое:
Вот пример простого скрипта, который ищет юзера, если у юзера положительный баланс делает одно, иначе другое:
Код: Выделить всё
<?php
$host = 'localhost'; //Хост MySQL-сервера.
$user = '***'; //Имя пользователя MySQL.
$pass = ****'; //Пароль пользователя MySQL.
$dbname = 'UTM5'; //Имя базы данных MySQL с которой мы будем работать.
$connect = mysql_connect($host, $user, $pass); //Устанавливаем соединение с MySQL-сервером
mysql_select_db($dbname); //Выбираем нужную базу данных.
$sql = mysql_query("SELECT * FROM `accounts` where `id` =1454;");//Посылаем SQL запрос на MySQL-сервер.
$result = mysql_result($sql,0,6);//Получаем значение ячейки седьмого столбца, первой строки таблицы.
if($result=="0")
echo system("/etc/init.d/100modup");
if($result=="16")
echo system("/etc/init.d/100mod");
mysql_close($connect);//Закрываем соединение с MySQL-сервером
?>
Последний раз редактировалось tail-n Ср фев 16, 2011 01:56, всего редактировалось 1 раз.
Поподробнее на этом, пожалуйста. У нас они все в одной подсети. мы им раздаем ипки из диапазона. Просто они белые и все)У меня нет аськи, вам надо железки засунуть в управляемую подсеть пока не поздно, а то замучаетесь.
Код: Выделить всё
if($result=="0")
echo system("/etc/init.d/100modup").
Нет в место /etc/init.d/100modup - ваш скрипт,Munsera писал(а):Поподробнее на этом, пожалуйста. У нас они все в одной подсети. мы им раздаем ипки из диапазона. Просто они белые и все)У меня нет аськи, вам надо железки засунуть в управляемую подсеть пока не поздно, а то замучаетесь.вместо "echo..." можно писать как раз команды управления циской? А как скрипт прикрутить к УТМ? Чтоб он постоянно проверял..Код: Выделить всё
if($result=="0") echo system("/etc/init.d/100modup").
ниже пример на перл:
/home/pahom/switch/dattest - список IP адресов в формате:
10.100.10.2
10.100.10.3
....
10.100.10.100 и тд
Скрипт берёт ip адреса из списка логинится на оборудование выполняет ряд команд исваливает.
Реализовано через telnet но это роли не играет, разве что нагрузка больше нежели если это делать через snmp.
Код: Выделить всё
#!/usr/bin/perl -w
#База с ip свичей
$filepach = '/home/pahom/switch/dattest';
open (FBAZA, $filepach) or die "Ошибка открытия файла $filepach";
while(<FBAZA>) {
my $swip = $_;
print $swip;
my @mac_ip = `(sleep 3; echo admin; sleep 3; echo ***; sleep 5; # Передаем логин, пароль на устройство
echo "save all";
sleep 20; echo "logout") | telnet $swip`;
%hash = ();
}
close(D) or die $!;
close(FBAZA) or die $!;
Ну вот смотри.
Этот скрипт куда прикручивать?
Вот создал я /home/pahom/switch/dattest с ипками.
Написал скрипт с содержанием :
Его куда прикручивать? Чмод какой сделать ему?
НЕмного алгоритм обработки не понял..
Код: Выделить всё
<?php
$host = 'localhost'; //Хост MySQL-сервера.
$user = '***'; //Имя пользователя MySQL.
$pass = ****'; //Пароль пользователя MySQL.
$dbname = 'UTM5'; //Имя базы данных MySQL с которой мы будем работать.
$connect = mysql_connect($host, $user, $pass); //Устанавливаем соединение с MySQL-сервером
mysql_select_db($dbname); //Выбираем нужную базу данных.
$sql = mysql_query("SELECT * FROM `accounts` where `id` =1454;");//Посылаем SQL запрос на MySQL-сервер.
$result = mysql_result($sql,0,6);//Получаем значение ячейки седьмого столбца, первой строки таблицы.
if($result=="0")
echo system("/etc/init.d/100modup");
if($result=="16")
echo system("/etc/init.d/100mod");
mysql_close($connect);//Закрываем соединение с MySQL-сервером
?>
Вот создал я /home/pahom/switch/dattest с ипками.
Написал скрипт с содержанием :
Код: Выделить всё
#!/usr/bin/perl -w
#База с ip свичей
$filepach = '/home/pahom/switch/dattest';
open (FBAZA, $filepach) or die "Ошибка открытия файла $filepach";
while(<FBAZA>) {
my $swip = $_;
print $swip;
my @mac_ip = `(sleep 3; echo admin; sleep 3; echo ***; sleep 5; # Передаем логин, пароль на устройство
echo "save all";
sleep 20; echo "logout") | telnet $swip`;
%hash = ();
}
close(D) or die $!;
close(FBAZA) or die $!;
НЕмного алгоритм обработки не понял..
Это только пример.
Здесь:
http://www.netup.ru/download/utm5_20101214.pdf
Стр 160 указаны перемернные которые можно передвать скрипту, если пользвателю в базе утм присвоен брандмауэр и порт,
передать можно так
/root/up.sh start UID SWITCH_IP SWITCH_PORT - включение порта
/root/up.sh stop UID SWITCH_IP SWITCH_PORT - выключение порта
Ну как вы всё реализуете всё зависит от конкретных особенностей сети.
Здесь:
http://www.netup.ru/download/utm5_20101214.pdf
Стр 160 указаны перемернные которые можно передвать скрипту, если пользвателю в базе утм присвоен брандмауэр и порт,
передать можно так
/root/up.sh start UID SWITCH_IP SWITCH_PORT - включение порта
/root/up.sh stop UID SWITCH_IP SWITCH_PORT - выключение порта
Ну как вы всё реализуете всё зависит от конкретных особенностей сети.
Спасибо. Почитаю.
Вот этот скрипт норм кстати. Как бы его прикрутить....
Код: Выделить всё
<?php
$host = 'localhost'; //Хост MySQL-сервера.
$user = '***'; //Имя пользователя MySQL.
$pass = ****'; //Пароль пользователя MySQL.
$dbname = 'UTM5'; //Имя базы данных MySQL с которой мы будем работать.
$connect = mysql_connect($host, $user, $pass); //Устанавливаем соединение с MySQL-сервером
mysql_select_db($dbname); //Выбираем нужную базу данных.
$sql = mysql_query("SELECT * FROM `accounts` where `id` =1454;");//Посылаем SQL запрос на MySQL-сервер.
$result = mysql_result($sql,0,6);//Получаем значение ячейки седьмого столбца, первой строки таблицы.
if($result=="0")
echo system("/etc/init.d/100modup");
if($result=="16")
echo system("/etc/init.d/100mod");
mysql_close($connect);//Закрываем соединение с MySQL-сервером
?>