Возникла необходимость выполнять различные команды (открытие веб-страницы, открытие чата в мессенджерах) на компьютере пользователя. Это нужно делать из 1С, которая расположена на сервере, и пользователи подключаются к ней через RDA или RDP. RDP у некоторых пользователей, у большинства RDA, хотя роли не играет, потребность обозначил.
Вроде как существуют различные способы такого взаимодействия, но хотелось бы понять, потребуется ли что-то настраивать на стороне сервера / компьютерах пользователей, для осуществления такой возможности.
Кто-нибудь такое дела или встречал вообще? Может есть какие-то идеи?
---
На текущий момент от данной затеи решили временно отказаться. Возможно в будущем к ней вернемся.
---
выполнять различные команды
Ну вот представьте себе, что я подключился к вашему 1С по RDP с андроид планшета. Что вы там у меня из 1С на моём планшете выполнять собрались?
---
Не подключитесь. Не нужно что-то лишнее придумывать. Я же в написал, что подключение идет с компьютера, и это всегда так будет.
---
что подключение идет с компьютераС первого раза до тебя не дошло, значит. Продолжаем.

На компьютере клиента стоит macOS 12 Monterey. Что вы там у него на маке из своей 1С запускать собрались?
---
Мы с Вами на "Ты" не переходили. И это до Вас видимо не дошло, что я написал в топике, при всем при этом указав тэг "Windows".
---
Мы с ВамиОпять до тебя не доходит. Продолжаем.

На компьютере пользователя залогинены два разных пользователя твоей Windows, подключенных к RDP под одним пользователем RDP. Оба сеанса запустили твою 1С под одним и тем же пользователем 1С. Где и в каком сеансе кому что ты запускать собрался?
---
Попрошу покинуть тему, т.к. с Вами диалога у нас не сложится, да и в теме Вы не шибко разбираетесь.
---
да и в теме Вы не шибко разбираетесьДа, с такими ожиданиями тебе долго придется решение искать. Как хорошо, что я не твой подчиненный.
---
хотелось бы понять, потребуется ли что-то настраивать на стороне сервера / компьютерах Как минимум - заменить терминальный клиент на компьютерах пользователей, потому что вряд ли стандартный mstsc.exe станет что-то исполнять по командам с сервера. А ведь только он запускается на клиентских компах при RPD/RDA, весь остальной софт может даже понятия не иметь о том, что есть какой-то там терминальный сервер.

Да я бы на месте разработчиков не стал даже и рассматривать такую возможность - это же золотая жила для вирусописателей: обращаемся по сети к компу - оп-ля, он начинает выполнять какие-то действия!
---
вместо чата сервер взаимодействий, вместо rdp веб клиент можно использовать
---
Это вовсе не то, что нужно.
К тому же ни один из перечисленных вариантов не подходит в виду специфики работы. Веб-клиент у нас для отдельных пользователей, а не для всех, и мессенджеры тоже специально были подобраны
---
без стороннего клиент серверного приложения не получится, я думаю. Да и в чем прикол выполнять скрипты пользователя на его компе, если он подключился по rdp, что мешает открывать их в сенсах rdp? Моветон какой-то
---
RDP лишь у некоторых пользователей, у большинства RDA (сейчас внесу корректировку в тему), но смысл один - выполнения кода с 1с, лежащей на сервере, которое бы взаимодействовало с компьютером пользователя.
---
Да не важно, какое это подключение. в вашем понимании RDA это удаленный стол chrome ? В любом случае, у всех пк разные, разрешения разные, порты разные, антивирусы разные, локальные пути могут тоже разными, потому и говорю требуется стороннее приложение, которое будет у клиента, которое проинициализирует запуск чего либо с нужными правами. Откуда бы серверу 1с знать о каком-то клиенте? не находящемся в его сети. да и данные протоколы насколько мне известно не предполагают обмен чем либо кроме визуала непосредственно подключения
---
RDA - Remote Desktop APP, т.е. когда нажал на ярлычок и запустилась программа с сервера, к которой был предоставлен доступ.
RDP - Remote Desktop Place, т.е. когда нажал на ярлычок и у тебя открылся рабочий стол

Сеть, разумеется, одна, иначе никак не откроется ни приложение, ни удаленный рабочий стол.
Раз с таким не сталкивались, то можете не перебирать варианты.
---
Чисто теоретически можно посмотреть в сторону psexec (из пакета SysinternalsSuite) или PowerShell (он погибче будет). Они оба прекрасно умеют выполнять команды на удаленных компьютерах (регулярно использую для администрирования, но там попроще задачи запустил команду и все). Будут сложности с определением сеансов, под которыми выполнять программу, наверняка еще какие-то подводные камни. Заранее надо подготовить набор скриптов, которые будут определять активного пользователя, запускать необходимую программу и т.д. и вот эти скрипты и нужно будет запускать командой из PS или Psexec через 1с. Костыли конечно, но возможно будет работать после плясок с бубнами.
Но надежнее и предсказуемее взаимодействие организовать через клиент-серверное соединение, например на Python. Например чтобы при входе пользователя на комп, запускался скрипт на Питоне, создавал сервер и ждал команды, а 1с отправляло нужные команды через POST или GET. Причем работать может и под виндой и под линуксом.Из готовых решений в голову что-то ничего не приходит
---
умеют выполнять команды на удаленных компьютерахВ каком из пользовательских сеансов на целевой машине? =]
---
Я же написал что будут сложности с определением сеансов, под которыми выполняются нужные программы. Это должен будет выяснять локальный скрипт и потом запускать нужную программу. Честно говоря ни разу так не делал, предполагаю чисто теоретически. Мне обычно нужны фоновые процессы выполнять (например на 50 компах одновременно обновить 1с или другую программу. или проверить как с компа в другом филиале проходят пинги до сервера ). Но с другой стороны на рабочем компе скорее всего 1 активный сеанс, его и нужно будет определить, а интерактивное выполнение в документации psexec и PS есть.
---
на рабочем компе скорее всего 1 активный сеансТут вопрос, что считать активным. Возможен повторный логон, первый сеанс при этом уйдет в фон, но продолжить жить. Ну и та же шедулка может запустить фоновое с полноценной сессией, interact with desktop и т.п. Если считать активным тот сеанс, который владеет вводом-выводом, клавиатурой-монитором, то нет никакой гарантии, что это тот же сеанс, который подключился по RDP и тем более зашел в 1С под нужным пользователем.

В результате в не ожидающим подвоха стороннем сеансе начнет что-то запускаться. С демонстрацией каких-либо забавных данных..
---
Я что-то пытался реализовать через psexec или какую-то другую подобную утилиту, но столкнулся с проблемой доступа - либо какую-то политику безопасности требовалось настроить, либо неверно вводил учетные данные при подключении (т.к. с данной утилитой раньше не работал).
По поводу питона подумаю, но скорее всего, админы такой вариант не одобрят ))
---
psexec - отличная вещь, но для примитивных рутинных задач, просто запустить команду. Повторюсь, что основную работу (определить сеанс и тд) должен выполнять локальный скрипт на целевом компьютере. Для того чтобы psexec работал нужно, чтобы на компьютере были разрешены административные ресурсы (\C$ \D$ \IPC$ \Admin$.). Так же можете попробовать запустить программу с ключом -s, чтобы запустить от системной учетной записи бывает что от имени конкретного пользователя (даже админа) не хочет выполняться, в причинах не разбирался. Можно еще попробовать ПоверШелл, там достаточно сложные программы можно писать.
 По поводу безопасности решения на Питоне - можно ведь ограничить IP адреса, с которых можно принимать команду, да и набор команд ограничить только 1-2 необходимыми. Думаю внутри локальной сети ничего страшного не должно произойти.
---
нужно, чтобы на компьютере были разрешены административные ресурсы (\C$ \D$ \IPC$ \Admin$.)Ему там админы питон запрещают, а ты вообще предлагаешь сделать из компов ботнет )))
---
Ну если вообще из сетевки провод вытащить, то точно никто не проникнет ))). Для использования административных ресурсов нужны административные права, которые не надо кому попало раздавать. Сама по себе задача выполнять программу на другом компе уже попахивает дырой в безопасности, разрешенные админресурсы не добавят проблем на этом фоне. Питон для примера просто, можно использовать любой распространенный язык программирования, на большинстве из них без особых проблем можно сделать простую программку, выполняющую нужную команду.
---
программку, выполняющую нужную командуЯ так с телефона комп вырубаю, когда засыпать начинаю:

```1c
    import subprocess
    from http.server import BaseHTTPRequestHandler
    from http.server import HTTPServer

    class HttpGetHandler(BaseHTTPRequestHandler):

    def do_GET(self):
    subprocess.run(["shutdown", "--poweroff","now"]) # вот прям так

    def run(server_class=HTTPServer, handler_class=BaseHTTPRequestHandler):
    server_address = ('0.0.0.0', 8000)
    httpd = server_class(server_address, handler_class)
    try:
    httpd.serve_forever()
    except KeyboardInterrupt:
    httpd.server_close()

    run(handler_class=HttpGetHandler)
```
---
Ну вот уже почти готовая реализация, для данной задачи. добавить несколько вариантов GET - запросов и вот уже готовая система удаленного запуска приложений. Но для выключения компа наверное еще красивее добавить телеграмм-бота и можно уже не только из домашней сети выключать.
---
и можно уже не только из домашней сети выключатьДаже не предаставляю, зачем эта красота нужна будет.
---
Даже не предаставляю, зачем эта красота нужна будет.

Так прикольно.... Просто понравилась идея, надо сделать как время будет. Например отключить ребенку, если долго сидит за компом...
Еще сейчас из интереса посмотрел, на PowerShell тоже вполне можно прослушивать порт и обрабатывать GET запросы, так что можно и без питона обойтись, встроенными средствами
---
Есть приложения для централизованного управления. В целом установив административную часть на сервер, а клиентские раскидав - можно через него получить доступ к любому компу и к любому сеансу на этом компе. и в целом эти приложения как раз умеют запускать что бы то ни было на клиентском ПК. Со стороны 1С надо будет только подготовить исходные данные.
---
надо будет

«Дорога, по обеим сторонам которой тянутся канавы, называется шоссе. Да-с, господа. Знаете ли вы, что такое канава? Канава — это выкопанное значительным числом рабочих углубление. Да-с. Копают канавы при помощи кирок. Известно ли вам, что такое кирка?»

© Фридрих Краус фон Циллергут
---
На текущий момент от данной затеи решили временно отказаться. Возможно в будущем к ней вернемся.
---
Мы решали по другому. Необходимые команды писались в в файл, в личный каталог пользователя на шареном ресурсе. На каждой машине работал сервис, который проверял наличие таких файлов. Но, там был строго определенный список команд, для выполнения на локальной машине, на которой залогинен пользователь.