|
14.01.2003, 12:54 | #1 |
Участник
|
Программный перезапуск AOS
Можно ли программно мягко перезапустить AOS внешней программой?
Чтобы пользователям рассылались предупреждения и они не могли логиниться, пока сервер останавливается. Изначально задача стояла так: периодически мягко перезапускать AOS. |
|
10.05.2006, 17:42 | #2 |
Участник
|
Ну Tony Green не отвечает, попробую я
Во вложении dll и примеры вызова ее функций из Axapta'ы (функции в кач-ве параметров принимают имя или адрес хоста, на котором запущен Server Manager и имя AOS). Функции - AosStart(HostName, AOSName) - запуск AOS AosStop(HostName, AOSName) - остановка AOS AosStatus(HostName, AOSName) - плучение статуса выполнения AOS PS. Для работы функций требуется запущенный Server Manager PPS Удалил вложение, исправление с правами доступа ниже
__________________
Axapta v.3.0 sp5 kr2 Последний раз редактировалось AndyD; 24.05.2006 в 11:30. Причина: Исправление прав доступа |
|
11.05.2006, 08:29 | #3 |
Участник
|
Цитата:
Сообщение от AndyD
Ну Tony Green не отвечает, попробую я
Во вложении dll и примеры вызова ее функций из Axapta'ы (функции в кач-ве параметров принимают имя или адрес хоста, на котором запущен Server Manager и имя AOS). Функции - AosStart(HostName, AOSName) - запуск AOS AosStop(HostName, AOSName) - остановка AOS AosStatus(HostName, AOSName) - плучение статуса выполнения AOS PS. Для работы функций требуется запущенный Server Manager Большое спасибо. Только надо, чтобы остановка АОС программно выполнялась не из Аксапты. Если и такой программный код есть, то буду очень признателен.
__________________
Александр |
|
11.05.2006, 08:36 | #4 |
Участник
|
Вообще-то там dll. Вызывать функции из нее можно из любого языка, поддерживающего их использование, в том числе из командной строки.
__________________
Axapta v.3.0 sp5 kr2 |
|
11.05.2006, 08:42 | #5 |
Участник
|
Цитата:
Сообщение от AndyD
Вообще-то там dll. Вызывать функции из нее можно из любого языка, поддерживающего их использование, в том числе из командной строки.
__________________
Александр |
|
11.05.2006, 11:42 | #6 |
Участник
|
Прошу прощения, насчет командной строки погорячился.
Добавил новые функции для вызова из нее. Вызывается так Запуск AOT rundll32 AosMgr.dll,AosStart_RunDll Axapta "Aaa 1" 1 Остановка AOT rundll32 AosMgr.dll,AosStop_RunDll Axapta "Aaa 1" 1 После имени вызываемой функции указывается имя хости или IP адрес. Второй параметр - имя AOS. Если в имени есть пробелы, то заключить в двойные кавачки. Третий параметр - показывать (1)/не показывать (0 или не указывать параметр) сообщение в случае ошибки Так же исправил ошибку при передаче имени AOS на сервер Вложение в сообщении выше обновил.
__________________
Axapta v.3.0 sp5 kr2 |
|
|
За это сообщение автора поблагодарили: andy.l (1), Logger (10). |
15.05.2006, 15:16 | #7 |
Участник
|
"Круто"
Получается, что с любого компа можно остановить AOS! Так это же доступ без контроля, а проще говоря дырка. |
|
15.05.2006, 15:28 | #8 |
Участник
|
Да. И я о том же
Dll практически делает то-же самое, что и AxCtrl.exe
__________________
Axapta v.3.0 sp5 kr2 |
|
19.05.2006, 13:57 | #9 |
Участник
|
Никто не пытался осуществить вышеописанное не в AXAPTA? Я пытаюсь сделать на делфи, но никак не получается, ошибку выдаёт. Вот код
Цитата:
...
function AOS(HostName,AOSName:String):integer;stdcall; external 'AosMgr.dll' name 'AosStatus'; procedure TForm1.Button1Click(Sender: TObject); begin case AOS('10.10.0.10','AXAPTA') of <-ЗДЕСЬ ОШИБКА -1: Label1.Caption := 'Connection timed out'; -2: Label1.Caption := 'Connection refused'; -3: Label1.Caption := 'Protocol error'; -4: Label1.Caption := 'Server manager not started'; -5: Label1.Caption := 'AOS stopped'; -6: Label1.Caption := 'AOS start pending'; -7: Label1.Caption := 'AOS stop pending'; -8: Label1.Caption := 'AOS running'; -9: Label1.Caption := 'AOS not found on server'; -10: Label1.Caption := 'Cannot assign requested address'; -11: Label1.Caption := 'Unknown TCP error'; -12: Label1.Caption := 'AOS unknown status'; else Label1.Caption := 'Unknown error';; end; end; ... Последний раз редактировалось Migel_84; 19.05.2006 в 14:00. |
|
19.05.2006, 15:43 | #10 |
Участник
|
Да точно, вызов из Delphi проходит с ошибкой. Во вложении исправленная dll
Еще - для AosStatus() дополнительно возвращаются значения с 1 по 4 в которых указывается текущий статус AOS. Посмотрите в коде на xpp - там это есть. PS Удалил вложение, исправление с правами доступа ниже
__________________
Axapta v.3.0 sp5 kr2 Последний раз редактировалось AndyD; 24.05.2006 в 11:25. Причина: Изменил права доступа для dll |
|
19.05.2006, 16:04 | #11 |
Участник
|
Цитата:
Сообщение от AndyD
Да точно, вызов из Delphi проходит с ошибкой. Во вложении исправленная dll
Еще - для AosStatus() дополнительно возвращаются значения с 1 по 4 в которых указывается текущий статус AOS. Посмотрите в коде на xpp - там это есть. |
|
23.05.2006, 11:27 | #12 |
Участник
|
Действительно, неплохая дырка, AOS может остановить любой пользователь с любого компа. Но дыра легко лечится закрытием портов, а в коде проги указывается локальный IP, только прогу тогда нужно запускать с сервера, тогда всё ок. Можно конечно выложить эту прогу, но тогда у кого-нибудь могут быть не очень хорошие последствия.
|
|
23.05.2006, 17:16 | #13 |
Moderator
|
Вообще-то, если dll делает то же, что и AxCtrl (сам не проверял), то для работы с АОСами нужен административный доступ на соответствующий сервер, чего у обычного пользователя быть не должно. Или я не прав?
__________________
Андрей. |
|
|
За это сообщение автора поблагодарили: AndyD (3). |
24.05.2006, 08:20 | #14 |
Участник
|
Цитата:
Сообщение от Dron AKA andy
Вообще-то, если dll делает то же, что и AxCtrl (сам не проверял), то для работы с АОСами нужен административный доступ на соответствующий сервер, чего у обычного пользователя быть не должно. Или я не прав?
|
|
24.05.2006, 11:21 | #15 |
Участник
|
Dron AKA andy говорит про AxCtrl.exe (оснастка из панели управления). Да, эта оснастка требует административный доступ для управления AOS. Я не учел этого, по-этому dll-ка может работать не обращая внимания на права доступа.
Выкладываю обновленный проект - в нем для управления требуется наличие административных прав на сервере AOS для текущего пользователя Windows (точнее прав на управление сервисами). Для получения статуса AOS (функция AosStatus()) административных прав не требуется.
__________________
Axapta v.3.0 sp5 kr2 Последний раз редактировалось AndyD; 12.01.2007 в 15:33. |
|
|
За это сообщение автора поблагодарили: mazzy (5), AlGol (1), vallys (2). |
12.01.2007, 10:42 | #16 |
Участник
|
Не хватает только AOSStatus_RunDll, чтобы для этого код не писать, а батником обойтись
|
|
16.11.2007, 17:06 | #17 |
Developer
|
Ув. AndyD!
Во-первых, спасибо за оч. полезную библиотеку! А во-вторых, позвольте задать Вам пару вопросов: 1. Знаете ли Вы как (не партнеру) можно найти информацию о принципах управления Server Manager (Ax32mgr.exe) по порту TCP 2712 (инет, доки, книги)? 2. Возможно ли подобным образом управлять и "режимом запуска" АОСа (manual, on demand)? И (в случае положительного ответа) может Вы бы согласились доработать Вашу библиотеку для управления "режимом запуска" АОСа ? Заранее, спасибо. |
|
12.01.2007, 10:45 | #18 |
Участник
|
Да и regsvr32 отказался ее регистрировать - говорит, точки входа нет
|
|
12.01.2007, 11:09 | #19 |
Участник
|
Это не COM-объект.
А что должна выводить AOSStatus_RunDll? И каким образом?
__________________
Axapta v.3.0 sp5 kr2 |
|
12.01.2007, 12:04 | #20 |
Участник
|
|
|
Теги |
aos, ax3.0, download, faq, администрирование, законченный пример |
|
|