Выполнение команд на компьютере пользователя из RDA

1. qazaas 11.01.24 09:22 Сейчас в теме
Возникла необходимость выполнять различные команды (открытие веб-страницы, открытие чата в мессенджерах) на компьютере пользователя. Это нужно делать из 1С, которая расположена на сервере, и пользователи подключаются к ней через RDA или RDP. RDP у некоторых пользователей, у большинства RDA, хотя роли не играет, потребность обозначил.
Вроде как существуют различные способы такого взаимодействия, но хотелось бы понять, потребуется ли что-то настраивать на стороне сервера / компьютерах пользователей, для осуществления такой возможности.
Кто-нибудь такое дела или встречал вообще? Может есть какие-то идеи?
По теме из базы знаний
Вознаграждение за ответ
Показать полностью
Найденные решения
30. qazaas 07.02.24 05:55 Сейчас в теме +5 $m
На текущий момент от данной затеи решили временно отказаться. Возможно в будущем к ней вернемся.
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
3. user1880116 11.01.24 09:35 Сейчас в теме
(1)
выполнять различные команды

Ну вот представьте себе, что я подключился к вашему 1С по RDP с андроид планшета. Что вы там у меня из 1С на моём планшете выполнять собрались?
5. qazaas 11.01.24 09:37 Сейчас в теме
(3) Не подключитесь. Не нужно что-то лишнее придумывать. Я же в написал, что подключение идет с компьютера, и это всегда так будет.
6. user1880116 11.01.24 09:41 Сейчас в теме
(5)
что подключение идет с компьютера
С первого раза до тебя не дошло, значит. Продолжаем.

На компьютере клиента стоит macOS 12 Monterey. Что вы там у него на маке из своей 1С запускать собрались?
8. qazaas 11.01.24 10:21 Сейчас в теме
(6)
Мы с Вами на "Ты" не переходили. И это до Вас видимо не дошло, что я написал в топике, при всем при этом указав тэг "Windows".
10. user1880116 11.01.24 10:29 Сейчас в теме
(8)
Мы с Вами
Опять до тебя не доходит. Продолжаем.

На компьютере пользователя залогинены два разных пользователя твоей Windows, подключенных к RDP под одним пользователем RDP. Оба сеанса запустили твою 1С под одним и тем же пользователем 1С. Где и в каком сеансе кому что ты запускать собрался?
11. qazaas 11.01.24 10:36 Сейчас в теме
(10)
Попрошу покинуть тему, т.к. с Вами диалога у нас не сложится, да и в теме Вы не шибко разбираетесь.
12. user1880116 11.01.24 10:54 Сейчас в теме
(11)
да и в теме Вы не шибко разбираетесь
Да, с такими ожиданиями тебе долго придется решение искать. Как хорошо, что я не твой подчиненный.
20. user856012 13 11.01.24 11:57 Сейчас в теме
(1)
хотелось бы понять, потребуется ли что-то настраивать на стороне сервера / компьютерах
Как минимум - заменить терминальный клиент на компьютерах пользователей, потому что вряд ли стандартный mstsc.exe станет что-то исполнять по командам с сервера. А ведь только он запускается на клиентских компах при RPD/RDA, весь остальной софт может даже понятия не иметь о том, что есть какой-то там терминальный сервер.

Да я бы на месте разработчиков не стал даже и рассматривать такую возможность - это же золотая жила для вирусописателей: обращаемся по сети к компу - оп-ля, он начинает выполнять какие-то действия!
2. romulanin 11.01.24 09:28 Сейчас в теме
вместо чата сервер взаимодействий, вместо rdp веб клиент можно использовать
4. qazaas 11.01.24 09:36 Сейчас в теме
(2) Это вовсе не то, что нужно.
К тому же ни один из перечисленных вариантов не подходит в виду специфики работы. Веб-клиент у нас для отдельных пользователей, а не для всех, и мессенджеры тоже специально были подобраны
7. romulanin 11.01.24 10:04 Сейчас в теме
(4) без стороннего клиент серверного приложения не получится, я думаю. Да и в чем прикол выполнять скрипты пользователя на его компе, если он подключился по rdp, что мешает открывать их в сенсах rdp? Моветон какой-то
user1880116; +1 Ответить
9. qazaas 11.01.24 10:25 Сейчас в теме
(7)
RDP лишь у некоторых пользователей, у большинства RDA (сейчас внесу корректировку в тему), но смысл один - выполнения кода с 1с, лежащей на сервере, которое бы взаимодействовало с компьютером пользователя.
13. romulanin 11.01.24 11:04 Сейчас в теме
(9) Да не важно, какое это подключение. в вашем понимании RDA это удаленный стол chrome ? В любом случае, у всех пк разные, разрешения разные, порты разные, антивирусы разные, локальные пути могут тоже разными, потому и говорю требуется стороннее приложение, которое будет у клиента, которое проинициализирует запуск чего либо с нужными правами. Откуда бы серверу 1с знать о каком-то клиенте? не находящемся в его сети. да и данные протоколы насколько мне известно не предполагают обмен чем либо кроме визуала непосредственно подключения
18. qazaas 11.01.24 11:40 Сейчас в теме
(13)
RDA - Remote Desktop APP, т.е. когда нажал на ярлычок и запустилась программа с сервера, к которой был предоставлен доступ.
RDP - Remote Desktop Place, т.е. когда нажал на ярлычок и у тебя открылся рабочий стол

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

В результате в не ожидающим подвоха стороннем сеансе начнет что-то запускаться. С демонстрацией каких-либо забавных данных..
17. qazaas 11.01.24 11:33 Сейчас в теме
(14)
Я что-то пытался реализовать через psexec или какую-то другую подобную утилиту, но столкнулся с проблемой доступа - либо какую-то политику безопасности требовалось настроить, либо неверно вводил учетные данные при подключении (т.к. с данной утилитой раньше не работал).
По поводу питона подумаю, но скорее всего, админы такой вариант не одобрят ))
19. Nikolay_b 11.01.24 11:51 Сейчас в теме
(17)
psexec - отличная вещь, но для примитивных рутинных задач, просто запустить команду. Повторюсь, что основную работу (определить сеанс и тд) должен выполнять локальный скрипт на целевом компьютере. Для того чтобы psexec работал нужно, чтобы на компьютере были разрешены административные ресурсы (\C$ \D$ \IPC$ \Admin$.). Так же можете попробовать запустить программу с ключом -s, чтобы запустить от системной учетной записи бывает что от имени конкретного пользователя (даже админа) не хочет выполняться, в причинах не разбирался. Можно еще попробовать ПоверШелл, там достаточно сложные программы можно писать.
По поводу безопасности решения на Питоне - можно ведь ограничить IP адреса, с которых можно принимать команду, да и набор команд ограничить только 1-2 необходимыми. Думаю внутри локальной сети ничего страшного не должно произойти.
22. starik-2005 3039 11.01.24 12:49 Сейчас в теме
(19)
нужно, чтобы на компьютере были разрешены административные ресурсы (\C$ \D$ \IPC$ \Admin$.)
Ему там админы питон запрещают, а ты вообще предлагаешь сделать из компов ботнет )))
23. Nikolay_b 11.01.24 13:05 Сейчас в теме
(22)
Ну если вообще из сетевки провод вытащить, то точно никто не проникнет ))). Для использования административных ресурсов нужны административные права, которые не надо кому попало раздавать. Сама по себе задача выполнять программу на другом компе уже попахивает дырой в безопасности, разрешенные админресурсы не добавят проблем на этом фоне. Питон для примера просто, можно использовать любой распространенный язык программирования, на большинстве из них без особых проблем можно сделать простую программку, выполняющую нужную команду.
24. starik-2005 3039 11.01.24 13:10 Сейчас в теме
(23)
программку, выполняющую нужную команду
Я так с телефона комп вырубаю, когда засыпать начинаю:
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)
Показать
25. Nikolay_b 11.01.24 13:36 Сейчас в теме
(24)
Ну вот уже почти готовая реализация, для данной задачи. добавить несколько вариантов GET - запросов и вот уже готовая система удаленного запуска приложений. Но для выключения компа наверное еще красивее добавить телеграмм-бота и можно уже не только из домашней сети выключать.
26. starik-2005 3039 11.01.24 13:38 Сейчас в теме
(25)
и можно уже не только из домашней сети выключать
Даже не предаставляю, зачем эта красота нужна будет.
27. Nikolay_b 11.01.24 13:56 Сейчас в теме
(26)
Даже не предаставляю, зачем эта красота нужна будет.


Так прикольно.... Просто понравилась идея, надо сделать как время будет. Например отключить ребенку, если долго сидит за компом...
Еще сейчас из интереса посмотрел, на PowerShell тоже вполне можно прослушивать порт и обрабатывать GET запросы, так что можно и без питона обойтись, встроенными средствами
28. varlon 15.01.24 20:47 Сейчас в теме
Есть приложения для централизованного управления. В целом установив административную часть на сервер, а клиентские раскидав - можно через него получить доступ к любому компу и к любому сеансу на этом компе. и в целом эти приложения как раз умеют запускать что бы то ни было на клиентском ПК. Со стороны 1С надо будет только подготовить исходные данные.
29. user1880116 16.01.24 08:51 Сейчас в теме
(28)
надо будет


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

© Фридрих Краус фон Циллергут
30. qazaas 07.02.24 05:55 Сейчас в теме +5 $m
На текущий момент от данной затеи решили временно отказаться. Возможно в будущем к ней вернемся.
31. varlon 27.02.24 20:33 Сейчас в теме
(30) Мы решали по другому. Необходимые команды писались в в файл, в личный каталог пользователя на шареном ресурсе. На каждой машине работал сервис, который проверял наличие таких файлов. Но, там был строго определенный список команд, для выполнения на локальной машине, на которой залогинен пользователь.
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот