Ls агенты: проблема запуска с сервера на сервере

  • Автор темы AlexyeNov
  • Дата начала
K

Klido

Cannot access foreign servers when running on a server
проблема может быть в другом... что понимают по foreign тут - достаточно ли взаимного доступа/трастеда или домен/сертификат надо иметь одинаковые.. или что-то в этом роде...
 
A

AlexyeNov

проблема может быть в другом... что понимают по foreign тут - достаточно ли взаимного доступа/трастеда или домен/сертификат надо иметь одинаковые.. или что-то в этом роде...

Ну я зарегил Сервер1 в домене Сервера2
Собственно в администраторе открыл Сервер2, добавил там новый сервер, а сформированную ID потом подсунул Серверу1 при его инсталляции.

В админке когда открываю Сервер1, то пишется что он в домене, в котором Сервер2.
Хз что ещё сделать :)

Кстати, полный текст ошибки: (№ 4184): Cannot access foreign servers when running on a server.
Если смотреть по кодам ошибок Лотуса, то это : "Public Const lsERR_NOTES_NOSERV_DB = 4184", если, конечно, коды ошибок идентичные мануалу и тому, что пишется у меня.

Собственно, если у кого есть спортивный интерес... ситуацию легко воспроизвести. Это минут 15 займёт у вас :)
 

lmike

нет, пердело совершенство
Lotus Team
27.08.2008
7 985
611
BIT
470
можно создавать док програмс, для нужного сервера...
и ждать результата
есть ещё такая конструкция consoleReturn$ = notesSession.SendConsoleCommand( serverName$, consoleCommand$ )
кот., в принципе могла бы дергать агента
Usage
This method can be used in a scheduled agent on a server to send console commands to another server. The signer of the agent must have privilege to "Run unrestricted methods and operations" on the server receiving the console command.
If this method is executed on a client, the current user must have privilege under "Full Remote Console Administrators" on the server receiving the console command.
If a console command abruptly closes the network connection to the server (for example, "drop all"), subsequent commands to the server fail with a network timeout until the connection is reestablished.
 
A

AlexyeNov

можно создавать док програмс, для нужного сервера...
и ждать результата
есть ещё такая конструкция consoleReturn$ = notesSession.SendConsoleCommand( serverName$, consoleCommand$ )
кот., в принципе могла бы дергать агента

да, я про это тоже думал.
только это же тоже не синхронно будет, так?
Да и параметр noteid не передаш. Тоесть, дерганый агент должен будет анализировать новые доки, по другому никак.
Единственное, чем удобно посылать на консоль - не нужно зацикливать агент на бесконечность (дабы было не 5 минут)
 

ToxaRat

Чёрный маг
Green Team
06.11.2007
3 332
42
BIT
0
AlexyeNov
может гламурнее реализовать почтой?
послали запрос-док на сервер 2
там агент поднялся, подключился, всё нашел и отправил на сервер 1
там агент поднялся и вложил всё что нужно в док
а человек пока курит
 
A

AlexyeNov

ToxaRat: почта не годится, у нас своя система журналирования для синхронизации, согласованная.
В общем, видимо придётся всё таки рассинхронизировать со стороны юзера с указанием смотреть в журнал.
 
K

Klido

пысы:
Схема Агент1.Run -> Agent2.RunOnServer не подходит - в этом случае у Юзера должны быть полномочия на доступ к Сервер2
что всё-таки мешает дать доступ юзерам на сервер с коннектором? На сервере2 делаем 1 базу с необходимым агентом - там его и запускаем...
если объемы запросов в сиквел крупные - дробим программно, чтоб не грузить канал...
 
A

Akupaka

В общем, видимо придётся всё таки рассинхронизировать со стороны юзера с указанием смотреть в журнал
как на счет...
пользователь на форме жмет кнопку, которая формирует док-запрос и запускает агент на сервере (доступном), который в свою очередь создает док-запрос на удаленном сервере.
на удаленном сервере с наименьшим интервалом срабатывает агент, который обрабатывает эти док-запросы и пишет в них же (или сразу на вызывающий сервер) ответы.
при этом на УИ клиента запускается таймер, который ждет "ответ" на свой док-запрос на своем сервере, а пользователю показывает какую-то картинку с надписью "подождите, запрос обрабатывается". если агент находит ответ, то отображает его пользователю. единственное, определить сколько времени ждать ответа и как обрабатывать исключения.
 
A

AlexyeNov

rinsk:
Лотус, факин шит, это лотус :KillMe: Короче, это - не помогает ! Проверено, разумеется :)
По человечески можно же так сказать: запускаться "ОТ" не значит запускаться "ГДЕ".
Опция же фоновых агентов "запускаться на сервере таком то" годится только для фоновых агентов, которые тусят в своих репликах.


как на счет...
пользователь на форме жмет кнопку, которая формирует док-запрос и запускает агент на сервере (доступном), который в свою очередь создает док-запрос на удаленном сервере.
на удаленном сервере с наименьшим интервалом срабатывает агент, который обрабатывает эти док-запросы и пишет в них же (или сразу на вызывающий сервер) ответы.
при этом на УИ клиента запускается таймер, который ждет "ответ" на свой док-запрос на своем сервере, а пользователю показывает какую-то картинку с надписью "подождите, запрос обрабатывается". если агент находит ответ, то отображает его пользователю. единственное, определить сколько времени ждать ответа и как обрабатывать исключения.


Ну это всё понятно и очевидно.
Но вот лично мне не нравятся "псевдо" ограничения на ожидание, таймауты... Лучше уж юзер сам пусть жмет на F9 в журнале, чем будем вешать ему весь клиент, согласен?
В общем, я пока сделал НЕсинхронно, через SendConsoleCommand - с рантайма сервера, разумеется.
Но тему закрывать не стоит, думаю она интересная... да и возможно появятся новые пути решения, которые будут хорошей альтернативой...

Пысы: как я понял, проблема изначальная всё таки упирается в кривой AgentManager лотуса ???
Ведь по сути политике безопасности должно быть пофиг на то, синк или асинк запросы идут. Ведь асинком можно это обойти. А всё остальное разруливается по любэ ACL и серверными конфигами...
Ну почему Lotus пишут индусы???? :)
 
A

Akupaka

Лучше уж юзер сам пусть жмет на F9 в журнале, чем будем вешать ему весь клиент, согласен?
нет, потому что при использовании таймера (NotesTimer) ничего не вешается, а задача автоматизируется. конечно, выбор за тобой :KillMe:
Пысы: как я понял, проблема изначальная всё таки упирается в кривой AgentManager лотуса ???
не факт, что он от этого кривой :) вполне возможно, что это реализация специальная, т.к. RunOnServer это синхронная команда, соотв., запускать ее с сервера на сервер - завязать один на другой, если тот повиснет, то и этот впадет в кому.
 
O

Omh

А если ту базу, которая пытается дёонуть агента прописать в ACL той базы, в которй находится дёргаемый агент в виде ReplicaID.
Это не поможет?

Помню просто что-то было такое.
Если фигню сказал, не казните :KillMe:
 

lmike

нет, пердело совершенство
Lotus Team
27.08.2008
7 985
611
BIT
470
как уже упоминал - можно пущать команды, что там наворочать в командах - дело второе
уведомление может делать первый сервер - бродкастом
тута я ссылался:
 
A

AlexyeNov

А вообще, интересно вот - насколько админы любят добавлять в серверные документы другие сервера в раздел безопасности "Администраторы удалённой консоли с полными правами" ?
 

lmike

нет, пердело совершенство
Lotus Team
27.08.2008
7 985
611
BIT
470
ну если этот сервер создал сам админ..., и знает для чего это нужно
 
A

Akupaka

насколько админы любят добавлять
админы вообще работать не любят! ))
у приложения есть спецификации и требования, если они не перечат правилам безопасности компании, то админы настраивают среду в соответствии с этими спецификациями.
 
K

Klido

насколько админы любят добавлять в серверные документы другие сервера в раздел безопасности "Администраторы удалённой консоли с полными правами" ?
ровно настолько, насколько им проще дать огрызок прав пользователям на удаленный сервер :)
 
A

AlexyeNov

В общем, банк дал дабро на передачу команд в консоль между серверами, буду бороться с асинхронностью теперь :)
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!