forum.bitel.ru http://forum.bitel.ru/ |
|
групповой сброс сессий http://forum.bitel.ru/viewtopic.php?f=44&t=10547 |
Страница 1 из 1 |
Автор: | survivor [ 25 май 2015, 14:05 ] |
Заголовок сообщения: | групповой сброс сессий |
Доброго дня, Нужно для группы пользователей сбросить сессии в мониторе модуля inet. Можно это как-то сделать? Если бы еще через sql - вообще супер было бы... Можно сброс типа "завершить (зависшиее) соединение". Почему нужно - меняем абонентам диапазон ip и параллельно переезжаем на другой L3 брас. Сам переход прошел на ура без даун-таймов (через "переопределение" в устройствах и новый пул адресов), но проблема в том, что те абоненты для кого уже есть dhcp сессия настырно переполучают все-тот же старый адрес и сессия продлевается (я уже и стоп датой старый пул закрыл и из списка dhcp.ipCategories его удалил). Единственное что помогает - сбросить dhcp сессию и через lease time абонент получает новый ip. Если на ночь запланировать тех работы - это не проблема. Но как сбросить сотни сессий разных юзеров? Замучаюсь мышкой тыкать... |
Автор: | vkulakov [ 25 май 2015, 14:09 ] |
Заголовок сообщения: | Re: групповой сброс сессий |
У меня для этих целей скрипт в дин. коде: через SQL выбираешь нужных абонентов и делаешь с ними что захочешь потом. Не только для сброса полезно. |
Автор: | Phricker [ 25 май 2015, 14:10 ] |
Заголовок сообщения: | Re: групповой сброс сессий |
Код: package ru.ellcom.bgbilling.scripts.inet;
import ru.bitel.bgbilling.kernel.container.managed.ServerContext; import ru.bitel.bgbilling.kernel.script.server.dev.GlobalScriptBase; import ru.bitel.bgbilling.modules.inet.api.common.service.InetServService; import ru.bitel.bgbilling.modules.inet.api.common.service.InetSessionService; import ru.bitel.bgbilling.server.util.Setup; import ru.bitel.common.sql.ConnectionSet; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; public class breakSessions extends GlobalScriptBase { static int INET_MID = 12; //ID модуля DialUp @Override public void execute( Setup setup, ConnectionSet connectionSet ) throws Exception { Connection con = connectionSet.getConnection(); ServerContext context = ServerContext.get(); InetSessionService inetServ = context.getService(InetSessionService.class, INET_MID); int count = 0; print("Start"); long timeStart = System.currentTimeMillis(); String query = " SELECT id FROM inet_connection_12 WHERE INET_NTOA(CONV(HEX(ipAddress), 16, 10)) BETWEEN '77.232.165.1' AND '77.232.165.255' "; PreparedStatement ps = con.prepareStatement( query ); ResultSet rs = ps.executeQuery(); while ( rs.next() ) { count++; long sessionId = rs.getInt( 1 ); inetServ.connectionClose(sessionId); } rs.close(); ps.close(); print("Сброшено " + count + " соединений"); long timeEnd = System.currentTimeMillis(); print( "Process time: " + (timeEnd - timeStart)/1000 + " s." ); } } |
Автор: | survivor [ 25 май 2015, 14:38 ] |
Заголовок сообщения: | Re: групповой сброс сессий |
Спасибо! Попробую |
Автор: | survivor [ 25 май 2015, 14:57 ] |
Заголовок сообщения: | Re: групповой сброс сессий |
Один такой ламерский вопрос (я в джаве вообще никак) - этот код куда подцепить? )) Здесь нет функции main, как вызвать объект класса breakSessions? Я вообще правильно понимаю что этот код нужно вставить в Сервис/Автоматизация/Глобальные скрипты поведения/Скрипты BGBS? |
Автор: | survivor [ 25 май 2015, 15:07 ] |
Заголовок сообщения: | Re: групповой сброс сессий |
![]() Ругается на @Override Код: EXCEPTIONS:
Sourced file: clear_dhcp_sessions Token Parsing Error: Lexical error at line 20, column 8. Encountered: "O" (79), after : "@" Sourced file: clear_dhcp_sessions Token Parsing Error: Lexical error at line 20, column 8. Encountered: "O" (79), after : "@": <at unknown location> at bsh.Interpreter.eval(Interpreter.java:707) at ru.bitel.bgbilling.kernel.script.server.bean.ScriptInstance.eval(ScriptInstance.java:327) at bitel.billing.server.script.global.bean.GlobalScriptMachine.runScriptImpl(GlobalScriptMachine.java:120) at bitel.billing.server.script.global.bean.GlobalScriptMachine.runScript(GlobalScriptMachine.java:73) at bitel.billing.server.script.global.bean.GlobalScriptManager.executeGlobalScript(GlobalScriptManager.java:40) at bitel.billing.server.script.global.action.ActionExecuteScript$1.run(ActionExecuteScript.java:48) at java.lang.Thread.run(Thread.java:745) |
Автор: | Phricker [ 25 май 2015, 15:10 ] |
Заголовок сообщения: | Re: групповой сброс сессий |
Это в динамический код надо вставлять. |
Автор: | survivor [ 25 май 2015, 15:18 ] |
Заголовок сообщения: | Re: групповой сброс сессий |
Ааа.. вот как.. а куда? в какую ветку? там у меня огромное количество вложенностей открыватся |
Автор: | survivor [ 25 май 2015, 15:29 ] |
Заголовок сообщения: | Re: групповой сброс сессий |
Опять ругается: |
Автор: | Phricker [ 25 май 2015, 15:31 ] |
Заголовок сообщения: | Re: групповой сброс сессий |
у вас файл называется inet а в самом коде написано public class breakSession Либо одно либо другое переименуйте |
Автор: | survivor [ 25 май 2015, 15:50 ] |
Заголовок сообщения: | Re: групповой сброс сессий |
Получилось! Большое спасибо! Один ньюанс - inetServ.connectionClose(sessionId); отрабатывает "Закрыть соединение (отключить)", а мне надо "Завершить (зависшее) соединение". Это можно? |
Автор: | Phricker [ 25 май 2015, 15:56 ] |
Заголовок сообщения: | Re: групповой сброс сессий |
http://bgbilling.ru/v6.2/javadoc/ru/bit ... rvice.html заменить connectionClose на connectionFinish |
Автор: | survivor [ 25 май 2015, 16:05 ] |
Заголовок сообщения: | Re: групповой сброс сессий |
то что надо! тема закрыта )) |
Автор: | PavelGloba [ 02 июн 2015, 00:30 ] |
Заголовок сообщения: | Re: групповой сброс сессий |
![]() Мне тоже нужно было одному клиенту ip поменять, но что-то пошло не так. Завершить зависшее соединение теперь уже не получается. Пишет "соединение не найдено". Лишний сервис до сих пор висит на договоре и его не удалить, т.к. эта сессия считается активной. Кто-нибудь знает как её удалить? |
Автор: | Amir [ 02 июн 2015, 21:20 ] |
Заголовок сообщения: | Re: групповой сброс сессий |
В логах ошибок нет? Устройство к которому привязана сессия в ветке Access+Accounting? Можно через БД в inet_connection. |
Автор: | PavelGloba [ 03 июн 2015, 00:22 ] |
Заголовок сообщения: | Re: групповой сброс сессий |
Ошибок нет Amir писал(а): Можно через БД в inet_connection. А как? |
Автор: | Amir [ 03 июн 2015, 11:41 ] |
Заголовок сообщения: | Re: групповой сброс сессий |
DELETE FROM inet_connection_<mid> WHERE id=2002 |
Автор: | PavelGloba [ 04 июн 2015, 16:33 ] |
Заголовок сообщения: | Re: групповой сброс сессий |
Помогло. Спасибо |
Страница 1 из 1 | Часовой пояс: UTC + 5 часов [ Летнее время ] |
Powered by phpBB® Forum Software © phpBB Group http://www.phpbb.com/ |