|
Определить IP клиента. Клиент серверный вариант. | ☑ | ||
---|---|---|---|---|
0
yopQua
18.01.23
✎
17:31
|
Доброго!
Как можно определить ИП адрес подключенного к базе клиента, для простоты толстого или тонкого? В сеансах агента сервера имя компа - не подходит из-за не уникальности |
|||
1
Garykom
гуру
18.01.23
✎
17:39
|
никак
|
|||
2
yopQua
18.01.23
✎
17:42
|
36с
|
|||
3
Kassern
18.01.23
✎
17:42
|
(0) Делайте имена компьютеров уникальными и пингуйте по этому имени
|
|||
4
Kassern
18.01.23
✎
17:43
|
Имя компа видно в кластере в сеансах/соединениях
|
|||
5
yopQua
18.01.23
✎
17:46
|
(3) ну пинговать тут не надо, немного о другом речь. а имена компов поменять - проблема.
|
|||
6
Kassern
18.01.23
✎
17:52
|
(5) Можно какую нибудь обработку на клиенте запустить обязательную, чтобы в реестр его IPшник записать. Методов несколько есть для этого: WbemScripting.SWbemLocator, или "winmgmts:\\.\root\CIMV2". Может еще какие-то есть. Создать регламент актуальности IP, по нему заставлять это дело обновлять. Будет у вас актуальные на определенный момент IP юзверов, работающих в вашей базе.
|
|||
7
Kassern
18.01.23
✎
17:52
|
Если бы вы написали, зачем вам эти пляски с бубном, может что-то ближе к делу подсказал
|
|||
8
Смотрящий
18.01.23
✎
17:53
|
(0) При старте 1с складывать ИП клиента в специальный параметр сеанса
|
|||
9
H A D G E H O G s
18.01.23
✎
18:11
|
(6) ип шников может быть много, а автору нужен 1с ный. Самое примитивное - выводить netstat -ano в файл и искать по 1541 порту.
|
|||
10
yopQua
18.01.23
✎
18:19
|
(8) есть параметр, который можно передавать между сеансами, что бы без записи в бд/файл или еще что то?
(6) ну да, можно и регистр сделать, складывать туда при начале сеанса, предварительно промониторив, то что там уже есть (7) смысл затеи в том, что бы контролировать количество запущенных сеансов в одной базе с одного компа под одним пользователем, должно быть не больше одного такого сеанса. чтобы не дублировали и не жрали лицензии (здесь без подробностей, коротко - при запуске очередного сеанса сжирают лицензию). база/комп/пользователь - набор уникальностей.. могбы быть, если бы компы имели уникальные имена. не случилось, админ с сегодняшнего дня заимел прозвище полупокер =) (9) да, сетевых интерфейсов может быть много. отсеять то наверно можно, определить 1Сный - для нее отдельная подсеть есть - выводить netstat -ano это в контексте конкретного сеанса? |
|||
11
PR
18.01.23
✎
19:59
|
СеансИнформационнойБазы (InfoBaseSession)
IPАдресКлиента (ClientIPAddress) Доступен, начиная с версии 8.3.17. Использование: Только чтение. Описание: Тип: Строка. IP-адрес клиента, который начал сеанс. Доступность: Сервер, толстый клиент, внешнее соединение. Примечание: Свойство содержит пустую строку, если получен не текущий сеанс и у пользователя нет права "Администратор". Использование в версии: Доступен, начиная с версии 8.3.17. |
|||
12
yopQua
19.01.23
✎
10:11
|
(11) то что надо, но как всегда 8.3., а тут 8.2. Хотя есть сервер 8.3... если бы был вариант передать ему имя базы 8.2 и он бы получил сеансы той базы...
|
|||
13
Kassern
19.01.23
✎
10:51
|
(12) Если у вас пользователи уникальные и каждый сидит только под собой, то можно наверное к пользователю привязаться. При старте, через ПолучитьСоединенияИнформационнойБазы получаете список соединений, если там уже есть соединение от этого пользователя с другим номером сеанса, то слать лесом)
|
|||
14
Мимохожий Однако
19.01.23
✎
11:00
|
(12) Озвучь остальные дополнительные условия , а то вдруг 8.2..Может и еще есть ограничения?
|
|||
15
eklmn
гуру
19.01.23
✎
11:02
|
(14) и не типовая наверно, где в настройках можно включить флажок "не более 1 сеанса" , геморойщики они такие....
|
|||
16
Garykom
гуру
19.01.23
✎
11:19
|
Никак не определить
Даже если клиент 1С при старте будет средствами ОС определять свой IP и сохранять в параметры сеанса Снаружи как связать пользователей 1С и IP в параметрах с тем что видно в Сеансах консоли администрирования сервера 1С? |
|||
17
Garykom
гуру
19.01.23
✎
11:21
|
(16)+ Один пользователь запустил два сеанса на двух компутерах с одинаковым именем "UserPC" но IP их разные и?
|
|||
18
yopQua
19.01.23
✎
11:55
|
давайте соберем все вместе по проблемной ситуации:
база серверная, самописная, 8.2.19.90. Производственные рабочие места заходят под одинаковыми пользователями 1С, потому как лепить на каждое раб. место отдельных пользователей с одним и тем же интерфейсом и функционалом "не рационально" и муторно. Заходят с компьютеров, не относящихся к домену, соответственно уникальность имен компов не соблюдается. На предложение переименовать админ вспомнил, что там спец. софт, лицензии которого вяжутся к имени компа (сомневаюсь, просто этим занимается отдельная служба, придется с ними это согласовывать, ему не с руки, проще внутри ИТ договориться, я не против). То есть могут заходить с разных машин под одним пользователем. Могут заходить с одной машины под разными пользователями. А с одной машины под одним пользователем не могут. Вроде прозрачная ситуация и все нормально, только имена компов не уникальные, надо найти какой то другой признак, который даст эту уникальность, поэтому ИП |
|||
19
yopQua
19.01.23
✎
11:58
|
(13) вот неуникальные учетки 1С
(17) значит это разные рабочие места, так он может запускать |
|||
20
Garykom
гуру
19.01.23
✎
11:59
|
(18) "лепить на каждое раб. место отдельных пользователей с одним и тем же интерфейсом и функционалом "не рационально" и муторно."
исправь первичную проблему |
|||
21
yopQua
19.01.23
✎
11:59
|
(13) и он должен иметь возможность запустить одну и ту же базу под одной и той же учеткой, но с разных рабочих мест
|
|||
22
yopQua
19.01.23
✎
12:02
|
(20) это значит добавить себе работы, неавтоматизированная автоматизация
|
|||
23
Kassern
19.01.23
✎
12:36
|
(22) А как вы потом разбираетесь, кто косячнул, если под одним юзвером разные люди работают?
|
|||
24
asady
19.01.23
✎
12:41
|
(18) у мну все производственники работают через общие компы цехов - они в режиме рабочего стола - и первое действие авторизация по штрихкоду (qr-коду)
а уже потом работа с производственными операциями |
|||
25
KJlag
19.01.23
✎
12:44
|
(23) возможно и разбираться кто косякнул - не рационально
|
|||
26
Ryzeman
19.01.23
✎
12:46
|
В ПараметрахСеанса на твоей 8.2 тоже нет IP адреса?
Делай тогда каким нибудь скриптом CMD или PowerShell. |
|||
27
vbus
19.01.23
✎
12:46
|
А чем не устраивает "Администрирование серверов"->Сеансы -> IP клиентов?
|
|||
28
Kassern
19.01.23
✎
12:58
|
Самый простой способ -> административный. Скушал 2 лицухи с компа, будь добр написать объяснительную. Несколько таких и привет вызов на ковер.
|
|||
29
Ryzeman
19.01.23
✎
13:02
|
(28) Не всегда. У нас запрет на запуск 3+ сеансов с одного компа кроме отдела ИТ тоже есть в силу ряда причин. Но уникальность по имени ПК, разумеется. Тут домен, имена уникальны.
|
|||
30
PR
19.01.23
✎
13:04
|
(12) Ой, всё
|
|||
31
KJlag
19.01.23
✎
13:12
|
(29) в принципе можно действительно поставить ограничение на колво сеансов по имени пк. ведь можно считать что в один момент времени там с пк работает один пользователь.
|
|||
32
Ryzeman
19.01.23
✎
13:14
|
(31) У ТС имя ПК не уникально, видимо, без AD
|
|||
33
mistеr
19.01.23
✎
14:05
|
Я так и не понял исходную проблему/задачу.
|
|||
34
yopQua
19.01.23
✎
15:29
|
(23) пользователь один, сотрудников много, шк
(24) тоже так (25) смешно. но в каждой шутке есть доля шутки. разбираются сами, по имеющейся информации, ее достаточно (26) а должен быть? ок, добавить не проблема. что он даст сеанса, если его видно только в этом сеансе (27) о чем тут речь, консоль администрирования? где там ИП клиентов, покнопочно не подскажете? (28) ковер в дырах, с него не сходят, толку нет, административных наказаний кроме атата не существует. если человек работает не первый день, то понимает, что кроме пригрожения пальцем ничего ему больше не сделают. к тому же лицензии - забота ИТ, а не производства, должны обеспечивать (29) есть и "доменная" база, там все нормально с контролем сеансов пошло (30) ) (31) в один момент один, а в два два. имена компьютеров на двух рабочих местах одинаковые. (32) это отдельная от доменной подсеть. в ад все нормально. (33) при начале работы системы перебрать сеансы базы и дать отказ, если с этого компьютера в этой базе уже есть сеанс этого пользователя |
|||
35
mistеr
19.01.23
✎
15:32
|
(34) >с этого компьютера в этой базе уже есть сеанс этого пользователя
Можно с помощью контрольного файла решить. |
|||
36
yopQua
19.01.23
✎
15:35
|
как сказали выше, в типовых есть настройка "Запретить открытие нескольких сеансов". Отработает она при одинаковых именах компов? Или она просто "на пользователя"?
|
|||
37
yopQua
19.01.23
✎
15:35
|
(35) контрольного файла?
|
|||
38
mistеr
19.01.23
✎
15:40
|
(37) Пишешь в файл инфу о сеансе. И проверяешь.
|
|||
39
yopQua
19.01.23
✎
15:41
|
(34) 33 не обязательно перебирать сеансы агента, может WinApi что то может дать? в винде, на которой крутится сервер приложения, это по-любому есть. может и в самом сервисе 1С есть, только доступа к этой информации он не предоставляет, интерфейсного даже, не говоря о программном
|
|||
40
yopQua
19.01.23
✎
15:42
|
(38) начинаю печалиться
|
|||
41
Kassern
19.01.23
✎
15:44
|
(40) А всего-то надо уникальных пользователей занести для каждого сотрудника. Настройки пользователей можно копировать.
|
|||
42
yopQua
19.01.23
✎
15:51
|
(41) нннну нет, если бы один раз это сделать и забыть, еще ладно, но так не выйдет, будут долбить новыми пользаками
система должна работать без участия программиста, сейчас этому ничего не мешает, новоиспеченный контроль сеансов только в ступор впал |
|||
43
Kassern
19.01.23
✎
15:52
|
Можно еще так извратиться) При входе в 1с требовать флешку токен. Если она воткнута, то считывается флешка (которая и будет уникальным идентификатором) и проверяется, есть ли активная запись с этой флешкой. Если есть, то слать лесом, пускай 1ску закрывает. Можно и без флешки, в каталоге юзвера хранить файл-идентификатор, его считывать и по нему определять уникальность компа.
|
|||
44
Kassern
19.01.23
✎
15:52
|
(42) "будут долбить новыми пользаками " - ну так сделайте им обработку создания нового юзвера. И не нужно будет долбить вас.
|
|||
45
Kassern
19.01.23
✎
15:55
|
(43)+ Есть методы -> КаталогДокументов() КаталогПрограммы() КаталогВременныхФайлов() . Может по ним как-то уникальности добиться
|
|||
46
Kassern
19.01.23
✎
15:55
|
А по поводу уникальных пользователей, так вы сразу несколько вопросов закроете. И с лицензиями и с разбором полетов косяков.
|
|||
47
yopQua
19.01.23
✎
16:14
|
(45) тут ведь вопрос не в уникальном признаке, их много, хоть серийный номер жесткого, проблема передачи этого между сеансами, они же изолированы друг от друга
(46) с разборами полетов проблем нет - в базе есть вся необходимая информация: оборудование, сотрудник, время и тд. Так что то решится, а что то появится, т к сейчас вся эта информация собирается по штрихкодам сотрудников, оборудования, материалов и тд, а так появятся пользователи с именами сотрудников, при имеющейся текучке ну его нах ладно, спасибо за идеи, слеплю регистр, буду там данные по сеансам собирать и при начале очередного сеанса буду это мониторить, спасибо! |
|||
48
lolek
19.01.23
✎
17:12
|
(0)
ЗпуститьПриложение("ipconfig > result.txt"); Не прокатит ? |
|||
49
yopQua
19.01.23
✎
17:18
|
(48) смотря куда ^_^
|
|||
50
vde69
19.01.23
✎
17:19
|
(49) с клиента на сервер 1с
|
|||
51
vde69
19.01.23
✎
17:22
|
может поможет?
Процедура ЗаполнитьСтруктуруБезопасностиНаКлиенте(Параметры) Экспорт //SESSIONNAME, ЭтоRDP Попытка Shell = Новый COMОбъект("WScript.Shell"); Параметры.SESSIONNAME = СокрЛП(Shell.ExpandEnvironmentStrings("%SESSIONNAME%")); Параметры.ЭтоRDP = (ЛЕВ(Параметры.SESSIONNAME,3) = "RDP"); Shell = Неопределено; Исключение ДополнительныеПраваСлужебный.ЗаписьОшибкиВЖурналРегистрации("Безопасность.ОшибкаSESSIONNAME", ОписаниеОшибки()); КонецПопытки; // ComputerName, UserDomain, UserName Попытка мПар = Новый COMОбъект("wscript.network"); Параметры.ComputerName = СокрЛП(мПар.ComputerName); Параметры.UserDomain = СокрЛП(мПар.UserDomain); Параметры.UserName = СокрЛП(мПар.UserName); мПар = Неопределено; Исключение ДополнительныеПраваСлужебный.ЗаписьОшибкиВЖурналРегистрации("Безопасность.ОшибкаWscript", ОписаниеОшибки()); КонецПопытки; КонецПроцедуры |
|||
52
H A D G E H O G s
19.01.23
✎
17:30
|
Серийник жесткого диска?
|
|||
53
yopQua
19.01.23
✎
17:47
|
камрады, проблема не в получении ИП текущей машины из текущего сеанса или серийного номера хдд или процессора (уверен, это тоже можно добыть), а в доступности этих данных, принадлежащих одному сеансу из другого сеанса. Грубо говоря, должно быть общедоступное место, откуда любой сеанс мог бы это получить. Файлы, виндовые реестры, иные "нестабильные и муторные хранилища" - возможно, но не хотелось бы. Лучше уже сделать 1Сный регистр и там хранить: проще обработка, подчистка, добавление новых записей, чем расковыривать текстовый файл, например.
Таким "местом хранения" этих данных и выступает в этом случае агент сервера. У него есть нужная информация, он доступен из любого сеанса, проблем нет, кроме того, что имя компьютера в этой ситуации не подходит, т к оно у меня не уникально, нужен другой признак, ИП например, это из реальных. Если бы у агента были серийные номера жестких дисков клиентов, то тоже подошло бы, но это фантазии. А ИП вполне реален, его реализовали в 1С, только в 8.3.17, а тут 8.2, еще нет его. Остальные параметры, которые есть у агента пересмотрел и ничего подходящего уникального не нашел. тем не менее благодарю за отзывчивость! |
|||
54
H A D G E H O G s
19.01.23
✎
17:55
|
(53) Удачи!
|
|||
55
Garykom
гуру
19.01.23
✎
18:02
|
(53) Удачи!
ЗЫ Особенно после вылета сеанса 1С... |
|||
56
Garykom
гуру
19.01.23
✎
18:03
|
Дешевле будет лицензий 1С докупить
Или написать внешний АРМ, который всего 1-2 лицензии будет расходовать для http-сервисов |
|||
57
mistеr
19.01.23
✎
18:20
|
(53) >общедоступное место, откуда любой сеанс мог бы это получить
Зачем тебе любой? Только в этой же базе на этом же компе. Локальный файл избавляет от необходимости различать компы, получать какие-то серийники, айпишники и т.д. >проще обработка, подчистка, добавление новых записей, чем расковыривать текстовый файл Прочитать текстовый файл это проблема? А ты точно программист? |
|||
58
H A D G E H O G s
19.01.23
✎
18:30
|
(57) Программист не доверяющий строкам. И любому IP, строящемуся на текстовых файлах. Я его понимаю, но - таков путь.
|
|||
59
H A D G E H O G s
19.01.23
✎
18:30
|
И любому IP -> И любому API
|
|||
60
yopQua
19.01.23
✎
18:48
|
(54) спасибо!
(55) спасибо! вылет предусмотрим конечно (56) да можно, есть такие мысли, но когда думаю об интеграции внешней софтины с 1С (а основная база это та, доменная, из нее много информации летит в эту базу, потом манипуляции и обратно отсылается результат работы) становится грустно. потихоньку переписываю на 8.3, тут конечно спорить, что функционал того не стоит, бессмысленно. но кому этот функционал кроме программиста нужен, обоснуй еще что нужно переходить и нужно на это выделять время. хотя в целом восьмерка еще сырая, и в 8.3 всего что может понадобиться не найдешь. Когда они КОМ порт добавят!!!! **негодуя цитирует Лаврова |
|||
61
H A D G E H O G s
19.01.23
✎
18:50
|
WMI
ROOT\StandardCIMV2 SELECT LocalAddress,LocalPort,RemotePort,OwningProcess,State FROM MSFT_NetTCPConnection where localport=1561 |
|||
62
H A D G E H O G s
19.01.23
✎
18:50
|
||||
63
H A D G E H O G s
19.01.23
✎
18:50
|
Даже уже запустил wbemtest и попробовал. Кажет телевизение.
|
|||
64
yopQua
19.01.23
✎
19:03
|
(61) даааа, оно! Спасибо, уважаемый HADGEHOGs. Теперь подумать как это синтезировать с сеансами сервера приложений, сейчас не соображу, обязательно отпишусь.
|
|||
65
H A D G E H O G s
19.01.23
✎
19:04
|
Но я бы написал Внешнюю Компоненту.
|
|||
66
ДедМорроз
19.01.23
✎
19:39
|
Ну и,опять же,ip-адрес на клиенте и ip-адрес клиента на сервере - это совершенно разные вещи.
Скпжем так,что как только у вас распределенная сеть,то очень большая вероятность,что адрес нескольких клиентов будет 192.168.0.100 |
|||
67
Garykom
гуру
19.01.23
✎
20:01
|
(66) наверняка будут если несколько сетей соединены через трансляцию ip-адресов
|
|||
68
Garykom
гуру
19.01.23
✎
20:03
|
||||
69
vde69
20.01.23
✎
17:06
|
вспоминаем старую добрую 7.7 с его блокировкой файла....
берем сетевой каталог, при старте в него пишем файл и именем юзера и еще чего нужно и вешаем на него блокировку. Как 1с закрыли - блокировка сама снимается.... Остается только при старте проверять наличие блокировки (параллельного сеанса) |
|||
70
Kassern
20.01.23
✎
17:09
|
(69) А тут ТСу нужно дать возможность работать под одним пользователем с разных компов параллельно, но с одного компа запретить (имена компов не уникальные)
|
|||
71
ДедМорроз
21.01.23
✎
11:24
|
Если нужно разрешить работать только с определенных компьютеров,тотделаем в базе справочник компьютеров и при запуске проверяем,что компьютер есть в списке.
В табличной части справочника можно хранить имена разрешенных пользователей. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |