Выполнение команд на компьютере пользователя из RDA
Возникла необходимость выполнять различные команды (открытие веб-страницы, открытие чата в мессенджерах) на компьютере пользователя. Это нужно делать из 1С, которая расположена на сервере, и пользователи подключаются к ней через RDA или RDP. RDP у некоторых пользователей, у большинства RDA, хотя роли не играет, потребность обозначил.
Вроде как существуют различные способы такого взаимодействия, но хотелось бы понять, потребуется ли что-то настраивать на стороне сервера / компьютерах пользователей, для осуществления такой возможности.
Кто-нибудь такое дела или встречал вообще? Может есть какие-то идеи?
Вроде как существуют различные способы такого взаимодействия, но хотелось бы понять, потребуется ли что-то настраивать на стороне сервера / компьютерах пользователей, для осуществления такой возможности.
Кто-нибудь такое дела или встречал вообще? Может есть какие-то идеи?
По теме из базы знаний
- Веб-сервисы в 1С8, обработка тестирования произвольного веб-сервиса
- 1С и Windows Script Host (WSH) и Windows Management Instrumentation (WMI). ОТ ТЕОРИИ К ПРАКТИКЕ. Часть I
- Занимательный PowerShell
- Установка RedHat Enterprise Linux 8 (RHEL 8.4). Подключение RHEL8 к домену Active Directory. Запуск терминального клиента.
- Система управления интеграциями на базе 1С:Шины
Найденные решения
Остальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(8)
На компьютере пользователя залогинены два разных пользователя твоей Windows, подключенных к RDP под одним пользователем RDP. Оба сеанса запустили твою 1С под одним и тем же пользователем 1С. Где и в каком сеансе кому что ты запускать собрался?
Мы с Вами
Опять до тебя не доходит. Продолжаем.
На компьютере пользователя залогинены два разных пользователя твоей Windows, подключенных к RDP под одним пользователем RDP. Оба сеанса запустили твою 1С под одним и тем же пользователем 1С. Где и в каком сеансе кому что ты запускать собрался?
(1)
Да я бы на месте разработчиков не стал даже и рассматривать такую возможность - это же золотая жила для вирусописателей: обращаемся по сети к компу - оп-ля, он начинает выполнять какие-то действия!
хотелось бы понять, потребуется ли что-то настраивать на стороне сервера / компьютерах
Как минимум - заменить терминальный клиент на компьютерах пользователей, потому что вряд ли стандартный mstsc.exe станет что-то исполнять по командам с сервера. А ведь только он запускается на клиентских компах при RPD/RDA, весь остальной софт может даже понятия не иметь о том, что есть какой-то там терминальный сервер.
Да я бы на месте разработчиков не стал даже и рассматривать такую возможность - это же золотая жила для вирусописателей: обращаемся по сети к компу - оп-ля, он начинает выполнять какие-то действия!
(9) Да не важно, какое это подключение. в вашем понимании RDA это удаленный стол chrome ? В любом случае, у всех пк разные, разрешения разные, порты разные, антивирусы разные, локальные пути могут тоже разными, потому и говорю требуется стороннее приложение, которое будет у клиента, которое проинициализирует запуск чего либо с нужными правами. Откуда бы серверу 1с знать о каком-то клиенте? не находящемся в его сети. да и данные протоколы насколько мне известно не предполагают обмен чем либо кроме визуала непосредственно подключения
(13)
RDA - Remote Desktop APP, т.е. когда нажал на ярлычок и запустилась программа с сервера, к которой был предоставлен доступ.
RDP - Remote Desktop Place, т.е. когда нажал на ярлычок и у тебя открылся рабочий стол
Сеть, разумеется, одна, иначе никак не откроется ни приложение, ни удаленный рабочий стол.
Раз с таким не сталкивались, то можете не перебирать варианты.
RDA - Remote Desktop APP, т.е. когда нажал на ярлычок и запустилась программа с сервера, к которой был предоставлен доступ.
RDP - Remote Desktop Place, т.е. когда нажал на ярлычок и у тебя открылся рабочий стол
Сеть, разумеется, одна, иначе никак не откроется ни приложение, ни удаленный рабочий стол.
Раз с таким не сталкивались, то можете не перебирать варианты.
Чисто теоретически можно посмотреть в сторону psexec (из пакета SysinternalsSuite) или PowerShell (он погибче будет). Они оба прекрасно умеют выполнять команды на удаленных компьютерах (регулярно использую для администрирования, но там попроще задачи запустил команду и все). Будут сложности с определением сеансов, под которыми выполнять программу, наверняка еще какие-то подводные камни. Заранее надо подготовить набор скриптов, которые будут определять активного пользователя, запускать необходимую программу и т.д. и вот эти скрипты и нужно будет запускать командой из PS или Psexec через 1с. Костыли конечно, но возможно будет работать после плясок с бубнами.
Но надежнее и предсказуемее взаимодействие организовать через клиент-серверное соединение, например на Python. Например чтобы при входе пользователя на комп, запускался скрипт на Питоне, создавал сервер и ждал команды, а 1с отправляло нужные команды через POST или GET. Причем работать может и под виндой и под линуксом.Из готовых решений в голову что-то ничего не приходит
Но надежнее и предсказуемее взаимодействие организовать через клиент-серверное соединение, например на Python. Например чтобы при входе пользователя на комп, запускался скрипт на Питоне, создавал сервер и ждал команды, а 1с отправляло нужные команды через POST или GET. Причем работать может и под виндой и под линуксом.Из готовых решений в голову что-то ничего не приходит
(15)
Я же написал что будут сложности с определением сеансов, под которыми выполняются нужные программы. Это должен будет выяснять локальный скрипт и потом запускать нужную программу. Честно говоря ни разу так не делал, предполагаю чисто теоретически. Мне обычно нужны фоновые процессы выполнять (например на 50 компах одновременно обновить 1с или другую программу. или проверить как с компа в другом филиале проходят пинги до сервера ). Но с другой стороны на рабочем компе скорее всего 1 активный сеанс, его и нужно будет определить, а интерактивное выполнение в документации psexec и PS есть.
Я же написал что будут сложности с определением сеансов, под которыми выполняются нужные программы. Это должен будет выяснять локальный скрипт и потом запускать нужную программу. Честно говоря ни разу так не делал, предполагаю чисто теоретически. Мне обычно нужны фоновые процессы выполнять (например на 50 компах одновременно обновить 1с или другую программу. или проверить как с компа в другом филиале проходят пинги до сервера ). Но с другой стороны на рабочем компе скорее всего 1 активный сеанс, его и нужно будет определить, а интерактивное выполнение в документации psexec и PS есть.
(16)
В результате в не ожидающим подвоха стороннем сеансе начнет что-то запускаться. С демонстрацией каких-либо забавных данных..
на рабочем компе скорее всего 1 активный сеанс
Тут вопрос, что считать активным. Возможен повторный логон, первый сеанс при этом уйдет в фон, но продолжить жить. Ну и та же шедулка может запустить фоновое с полноценной сессией, interact with desktop и т.п. Если считать активным тот сеанс, который владеет вводом-выводом, клавиатурой-монитором, то нет никакой гарантии, что это тот же сеанс, который подключился по RDP и тем более зашел в 1С под нужным пользователем.
В результате в не ожидающим подвоха стороннем сеансе начнет что-то запускаться. С демонстрацией каких-либо забавных данных..
(14)
Я что-то пытался реализовать через psexec или какую-то другую подобную утилиту, но столкнулся с проблемой доступа - либо какую-то политику безопасности требовалось настроить, либо неверно вводил учетные данные при подключении (т.к. с данной утилитой раньше не работал).
По поводу питона подумаю, но скорее всего, админы такой вариант не одобрят ))
Я что-то пытался реализовать через psexec или какую-то другую подобную утилиту, но столкнулся с проблемой доступа - либо какую-то политику безопасности требовалось настроить, либо неверно вводил учетные данные при подключении (т.к. с данной утилитой раньше не работал).
По поводу питона подумаю, но скорее всего, админы такой вариант не одобрят ))
(17)
psexec - отличная вещь, но для примитивных рутинных задач, просто запустить команду. Повторюсь, что основную работу (определить сеанс и тд) должен выполнять локальный скрипт на целевом компьютере. Для того чтобы psexec работал нужно, чтобы на компьютере были разрешены административные ресурсы (\C$ \D$ \IPC$ \Admin$.). Так же можете попробовать запустить программу с ключом -s, чтобы запустить от системной учетной записи бывает что от имени конкретного пользователя (даже админа) не хочет выполняться, в причинах не разбирался. Можно еще попробовать ПоверШелл, там достаточно сложные программы можно писать.
По поводу безопасности решения на Питоне - можно ведь ограничить IP адреса, с которых можно принимать команду, да и набор команд ограничить только 1-2 необходимыми. Думаю внутри локальной сети ничего страшного не должно произойти.
psexec - отличная вещь, но для примитивных рутинных задач, просто запустить команду. Повторюсь, что основную работу (определить сеанс и тд) должен выполнять локальный скрипт на целевом компьютере. Для того чтобы psexec работал нужно, чтобы на компьютере были разрешены административные ресурсы (\C$ \D$ \IPC$ \Admin$.). Так же можете попробовать запустить программу с ключом -s, чтобы запустить от системной учетной записи бывает что от имени конкретного пользователя (даже админа) не хочет выполняться, в причинах не разбирался. Можно еще попробовать ПоверШелл, там достаточно сложные программы можно писать.
По поводу безопасности решения на Питоне - можно ведь ограничить IP адреса, с которых можно принимать команду, да и набор команд ограничить только 1-2 необходимыми. Думаю внутри локальной сети ничего страшного не должно произойти.
(22)
Ну если вообще из сетевки провод вытащить, то точно никто не проникнет ))). Для использования административных ресурсов нужны административные права, которые не надо кому попало раздавать. Сама по себе задача выполнять программу на другом компе уже попахивает дырой в безопасности, разрешенные админресурсы не добавят проблем на этом фоне. Питон для примера просто, можно использовать любой распространенный язык программирования, на большинстве из них без особых проблем можно сделать простую программку, выполняющую нужную команду.
Ну если вообще из сетевки провод вытащить, то точно никто не проникнет ))). Для использования административных ресурсов нужны административные права, которые не надо кому попало раздавать. Сама по себе задача выполнять программу на другом компе уже попахивает дырой в безопасности, разрешенные админресурсы не добавят проблем на этом фоне. Питон для примера просто, можно использовать любой распространенный язык программирования, на большинстве из них без особых проблем можно сделать простую программку, выполняющую нужную команду.
(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)
Показать
(24)
Ну вот уже почти готовая реализация, для данной задачи. добавить несколько вариантов GET - запросов и вот уже готовая система удаленного запуска приложений. Но для выключения компа наверное еще красивее добавить телеграмм-бота и можно уже не только из домашней сети выключать.
Ну вот уже почти готовая реализация, для данной задачи. добавить несколько вариантов GET - запросов и вот уже готовая система удаленного запуска приложений. Но для выключения компа наверное еще красивее добавить телеграмм-бота и можно уже не только из домашней сети выключать.
(26)
Так прикольно.... Просто понравилась идея, надо сделать как время будет. Например отключить ребенку, если долго сидит за компом...
Еще сейчас из интереса посмотрел, на PowerShell тоже вполне можно прослушивать порт и обрабатывать GET запросы, так что можно и без питона обойтись, встроенными средствами
Даже не предаставляю, зачем эта красота нужна будет.
Так прикольно.... Просто понравилась идея, надо сделать как время будет. Например отключить ребенку, если долго сидит за компом...
Еще сейчас из интереса посмотрел, на PowerShell тоже вполне можно прослушивать порт и обрабатывать GET запросы, так что можно и без питона обойтись, встроенными средствами
Есть приложения для централизованного управления. В целом установив административную часть на сервер, а клиентские раскидав - можно через него получить доступ к любому компу и к любому сеансу на этом компе. и в целом эти приложения как раз умеют запускать что бы то ни было на клиентском ПК. Со стороны 1С надо будет только подготовить исходные данные.
(28)
«Дорога, по обеим сторонам которой тянутся канавы, называется шоссе. Да-с, господа. Знаете ли вы, что такое канава? Канава — это выкопанное значительным числом рабочих углубление. Да-с. Копают канавы при помощи кирок. Известно ли вам, что такое кирка?»
© Фридрих Краус фон Циллергут
надо будет
«Дорога, по обеим сторонам которой тянутся канавы, называется шоссе. Да-с, господа. Знаете ли вы, что такое канава? Канава — это выкопанное значительным числом рабочих углубление. Да-с. Копают канавы при помощи кирок. Известно ли вам, что такое кирка?»
© Фридрих Краус фон Циллергут
(30) Мы решали по другому. Необходимые команды писались в в файл, в личный каталог пользователя на шареном ресурсе. На каждой машине работал сервис, который проверял наличие таких файлов. Но, там был строго определенный список команд, для выполнения на локальной машине, на которой залогинен пользователь.
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот