forum.bitel.ru
http://forum.bitel.ru/

ssh сессия в синхронных событиях радиуса
http://forum.bitel.ru/viewtopic.php?f=5&t=3806
Страница 1 из 1

Автор:  dmitry_P [ 05 апр 2010, 15:43 ]
Заголовок сообщения:  ssh сессия в синхронных событиях радиуса

Уважаемые, подскажите, можно ли поднимать сессию ссх на шлюз из синхронных событий, типа модуль Dial-UP радиус-аутентификация? Это нужно, например для разблокировки внешнего трафика на промежуточном шлюзе, который блокирует шумовой трафик из мира на неактивные адреса. Сейчас выдается ошибка, типа знать не знаю ни про какую сессию, а на асинхронном событии скрипт отрабатывает штатно

Автор:  stark [ 05 апр 2010, 19:21 ]
Заголовок сообщения:  Re: ssh сессия в синхронных событиях радиуса

теоретически, можно

Автор:  dmitry_P [ 06 апр 2010, 11:07 ]
Заголовок сообщения:  Re: ssh сессия в синхронных событиях радиуса

А можно побольше теории, а лучше практики

Автор:  stark [ 07 апр 2010, 15:13 ]
Заголовок сообщения:  Re: ssh сессия в синхронных событиях радиуса

dmitry_P писал(а):
А можно побольше теории, а лучше практики

вопрос был - можно; ответ - да . Что вы конретно хотите, что пытались делать и что получили

Автор:  dmitry_P [ 08 апр 2010, 09:19 ]
Заголовок сообщения:  Re: ssh сессия в синхронных событиях радиуса

Не совсем понял к чему такие подробности, но извольте...
Стандартный скрипт для передачи команд по ссх на шлюз микротик по событию (в данном случае аутентификация радиус):

import bitel.billing.server.radius.*;
import bitel.billing.common.*;
import bitel.billing.server.util.ssh.*;

adrl="deny_parazit_all";

response = event.getResponse();

sip=IPUtils.convertIpToString(response.getIntAttribute( 8 ));
login = "xxxx";
timeout = 0 ;
pswd = "yyyy";
String host = "xxx.xxx.xxx.xxx";
port = 22;
try
{
mysession = new SSHSessionExec( host, port, login, pswd ); mysession.setTimeout( timeout );
address_list = mysession.command( "ip firewall address-list print without-paging where list=" + adrl ); //это строка 22
if (address_list.indexOf(sip+" ")<0){//probel dlya tochnogo poiska
str_find = "/ip firewall address-list find address=\"" + sip + "\" list=" + adrl;
cmd_ssh = ":if ([:len [" + str_find + "]] > 0) do={/ip firewall address-list remove [" + str_find + "]}";
print(cmd_ssh);
result = mysession.command( cmd_ssh );

}


}
catch( Exception e )
{
throw new RuntimeException( e );
}
finally
{
}

Получаем следующее:
EXCEPTIONS:
Sourced file: Function [id:13; title:Unblock_noise] : Method Invocation mysession.command
Sourced file: Function [id:13; title:Unblock_noise] : Method Invocation mysession.command : at Line: 22 : in file: Function [id:13; title:Unblock_noise] : mysession .command ( "ip firewall address-list print without-paging where list=" + adrl )

Target exception: java.lang.NoClassDefFoundError: com/jcraft/jsch/Session

at bsh.BSHMethodInvocation.eval(Unknown Source)
at bsh.BSHPrimaryExpression.eval(Unknown Source)
at bsh.BSHPrimaryExpression.eval(Unknown Source)
at bsh.BSHAssignment.eval(Unknown Source)
at bsh.BSHBlock.evalBlock(Unknown Source)
at bsh.BSHBlock.eval(Unknown Source)
at bsh.BSHBlock.eval(Unknown Source)
at bsh.BSHTryStatement.eval(Unknown Source)
at bsh.Interpreter.eval(Unknown Source)
at ru.bitel.bgbilling.kernel.script.server.bean.ScriptInstance.eval(ScriptInstance.java:310)
at bitel.billing.server.script.bean.ScriptMachine$SimpleScriptRunner.runScript(ScriptMachine.java:69)
at bitel.billing.server.script.bean.ScriptMachine.runScriptImpl(ScriptMachine.java:189)
at bitel.billing.server.script.bean.ScriptMachine.runScript(ScriptMachine.java:128)
at bitel.billing.server.script.bean.event.EventProcessor.processEvent(EventProcessor.java:227)
at bitel.billing.server.processor.DefaultProcessor.standartAuth(DefaultProcessor.java:207)
at bitel.billing.server.processor.dialup.DialUpProcessor.authenticationProcess(DialUpProcessor.java:130)
at bitel.billing.server.radius.RadiusRequestThread.processRequest(RadiusRequestThread.java:180)
at bitel.billing.server.radius.RadiusRequestThread.run(RadiusRequestThread.java:79)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)

На событие, допустим Приход платежа, при исправлении метода получения IP, скрипт отрабатывает нормально

Автор:  stark [ 09 апр 2010, 13:01 ]
Заголовок сообщения:  Re: ssh сессия в синхронных событиях радиуса

dmitry_P писал(а):
Не совсем понял к чему такие подробности, но извольте...


Если вы хотиет чтобы вам помогали, то нужна информация . телепатически пока не умеем.



dmitry_P писал(а):
Стандартный скрипт для передачи команд по ссх на шлюз микротик по событию (в данном случае аутентификация радиус):


Target exception: java.lang.NoClassDefFoundError: com/jcraft/jsch/Session



положите библиотеку jsch.jar из сервера в радиус

Автор:  snark [ 09 апр 2010, 19:56 ]
Заголовок сообщения:  Re: ssh сессия в синхронных событиях радиуса

что нибудь планируется сделать с тем что радиус не видит не свои библиотеки? в первую очередь интересует npay, но ipn, получается (telnet/ssh это ipn?), тоже бы не помешал

Автор:  dmitry_P [ 10 апр 2010, 09:33 ]
Заголовок сообщения:  Re: ssh сессия в синхронных событиях радиуса

Заработало, спасибо.

Автор:  stark [ 12 апр 2010, 11:33 ]
Заголовок сообщения:  Re: ssh сессия в синхронных событиях радиуса

snark писал(а):
[offtop]что нибудь планируется сделать с тем что радиус не видит не свои библиотеки?

насчте этого не в курсе , пока вроде нет
snark писал(а):
в первую очередь интересует npay, но ipn, получается (telnet/ssh это ipn?), тоже бы не помешал

telnet/ssh - это ядро сервера (server.jar) + библиотеки работы с этими протоколами.

Страница 1 из 1 Часовой пояс: UTC + 5 часов [ Летнее время ]
Powered by phpBB® Forum Software © phpBB Group
http://www.phpbb.com/