Intereting Posts
Как реализовать связь между клиентским приложением Java (Android) и приложением PHP-сервера? Точная отчетная ссылка от платежей, сделанных с помощью PayPal в Google Analytics «php.exe» не распознается как внутренняя или внешняя команда, операционная программа или командный файл Laravel 5.1 Просмотр не найден Создание круговой диаграммы из php с использованием таблицы mysql Отображение только WooCommerce YII, как обрабатывать пользовательскую страницу ошибки 404 вместе с другими страницами ошибок Захват нескольких типов исключений в одном блоке catch Функция DB сообщает об ошибках при добавлении новой статьи в Joomla! Чтение удаленного размера файла с использованием размера файла multi textfield с автозаполнением, но почему только первый php, бесконечный цикл в while () loop Как выдать запрос HTTP POST? Массив PHP для массива javascript Предупреждение: mysql_num_rows () ожидает, что параметр 1 будет ресурсом, boolean given

Можно подключиться к удаленному рабочему столу с помощью PHP?

У меня есть несколько серверов, с которыми я бы хотел подключиться каждый раз, чтобы запустить программу. Однако, чтобы это стало проще, я хотел бы, чтобы скрипт PHP подключался к каждому из них через удаленный рабочий стол и запускал каждый из них. Это возможно? Если да, с чего мне начать? Пример был бы прекрасен.

В теории вы могли бы реализовать PHP-скрипт, который мог бы связываться с сервером в RDP-протоколе, но я, конечно, не захотел бы создавать сценарий, который может сделать что-либо значимое, поскольку RDP построен для отображения пользовательского интерфейса удаленной машины подключенный клиент и PHP построены в первую очередь для управления текстом.

Если вы хотите, чтобы PHP-скрипт дистанционно управлял другим компьютером, SSH является гораздо более разумным вариантом, поскольку PHP может легко подключаться к CLI удаленного cmputer и выдавать команды серверу с помощью команд оболочки, которые являются текстовыми и поэтому легко сгенерированы с помощью PHP ,

С другой стороны, взаимодействие с удаленным компьютером с RDP было бы крайне затруднительным. Просто подумайте о нажатии на значок, чтобы получить список каталогов для начала. Сначала вам нужно определить, где указатель мыши, отображается ли значок, который вы хотите щелкнуть, и если да, то где его ограничивающий прямоугольник относительно указателя мыши. Затем вам придется выдавать команды для перемещения указателя мыши в ограничительную рамку, а затем убедитесь, что указатель мыши находится в нужном месте (локальный или другой удаленный пользователь может перемещать мышь), а затем выдавать пару клики с небольшой задержкой между ними.

Это будет намного сложнее, чем выпустить «cd C: \ Program Files», за которым следует, например, «dir».

я использую

rdesktop -u username -p password 192.168.1.131 -g 1024x640 

в linux, где 192.168.1.131 – IP-адрес назначения, а 1024×640 – размер окна.

Также вы можете использовать

 rdesktop -u username -p password 192.168.1.131 -f 

для полного экрана.

Не забудьте заменить имя пользователя и пароль своими данными.

PHP не может использовать RDP для подключения к серверу. Они могут использовать SSH или FTP или сокет для прослушивающего порта.

То, что вы просите, безумно! знак равно

Редактировать:

Поскольку вы настаиваете на этом, вот что вам нужно:

 [MS-RDPBCGR]: Remote Desktop Protocol: Basic Connectivity and Graphics Remoting Specification [MS-RDPCR2]: Remote Desktop Protocol: Composited Remoting V2 Specification [MS-RDPEA]: Remote Desktop Protocol: Audio Output Virtual Channel Extension [MS-RDPEAI]: Remote Desktop Protocol: Audio Input Redirection Virtual Channel Extension [MS-RDPECLIP]: Remote Desktop Protocol: Clipboard Virtual Channel Extension [MS-RDPEDC]: Remote Desktop Protocol: Desktop Composition Virtual Channel Extension [MS-RDPEDYC]: Remote Desktop Protocol: Dynamic Channel Virtual Channel Extension [MS-RDPEFS]: Remote Desktop Protocol: File System Virtual Channel Extension [MS-RDPEGDI]: Remote Desktop Protocol: Graphics Device Interface (GDI) Acceleration Extensions [MS-RDPELE]: Remote Desktop Protocol: Licensing Extension [MS-RDPEMC]: Remote Desktop Protocol: Multiparty Virtual Channel Extension [MS-RDPEPC]: Remote Desktop Protocol: Print Virtual Channel Extension [MS-RDPEPNP]: Remote Desktop Protocol: Plug and Play Devices Virtual Channel Extension [MS-RDPEPS]: Remote Desktop Protocol: Session Selection Extension [MS-RDPERP]: Remote Desktop Protocol: Remote Programs Virtual Channel Extension [MS-RDPESC]: Remote Desktop Protocol: Smart Card Virtual Channel Extension [MS-RDPESP]: Remote Desktop Protocol: Serial and Parallel Port Virtual Channel Extension [MS-RDPEUSB]: Remote Desktop Protocol: USB Devices Virtual Channel Extension [MS-RDPEV]: Remote Desktop Protocol: Video Redirection Virtual Channel Extension [MS-RDPEXPS]: Remote Desktop Protocol: XML Paper Specification (XPS) Print Virtual Channel Extension [MS-RDPNSC]: Remote Desktop Protocol: NSCodec Extension [MS-RDPRFX]: Remote Desktop Protocol: RemoteFX Codec Extension 

Вы можете найти все здесь: http://msdn.microsoft.com/en-us/library/cc216513(v=PROT.10).aspx

С помощью этой документации вы можете определить возможность вашего проекта.

Я думаю, было бы лучше, если бы серверы запускали службу, к которой вы могли бы подключиться. Например, они могут запускать веб-службу (например, php, если это ваш желаемый язык). Затем вы можете подключиться к этому веб-адресу через порт 80, который может запускать приложения. Конечно, у вас есть проблемы с безопасностью, но вы должны иметь возможность настраивать их так, чтобы они принимали только запросы от определенных IP-адресов. В качестве альтернативы вы можете сделать скрипт защищенным паролем

Причина, по которой ppl не рекомендует RDP, заключается в том, что RDP не имеет API, чтобы делать даже отдаленно то, что вы на самом деле хотите. Самый простой способ сделать это, когда-то оставаясь в пределах ваших требований, – установить одно из указанных ниже программ на машинах хоста. Тогда вам понадобится API для подключения:

  • Это: http://www.codeproject.com/KB/system/remoteexec.aspx . В PHP все, что вам понадобится, является чем-то простым, как exec («rexec 123.21.61.12 notepad.exe» \ fileserver1 \ test file.txt ») (вы можете изменить его, чтобы принять ключ для некоторой безопасности)

  • TeamViewer (бесплатно): http://www.teamviewer.com/en/products/remotecontrol.aspx Затем вы должны использовать TeamViewer WebConnect для подключения через PHP

  • OpenVPN (с открытым исходным кодом) Не уверен, есть ли у него API, но я не удивлюсь

  • Войдите в систему (как указано выше)

  • Установите WAMP на хосты, а затем запустите команды php на них. Таким образом, это будет что-то вроде php to php, где ur клиент будет вызывать что-то вроде curl (127.0.0.1/?key=loooong&command=blah), и сервер будет запускать exec («переданная команда»)

Честно говоря, лучше всего будет C #. Вероятно, это не то, что вы хотите услышать, но чрезвычайно сложно сделать rdp-клиент на этом языке.

Если вам разрешено создать пользователя, имеющего доступ к журналам. Я бы сделал что-то, что будет работать, когда пользователь подключится. Программа будет загружать журналы на unix-сервер с FTP-доступом.

Тогда, даже если вы не можете написать решение с одним кликом в C #, вы могли бы по крайней мере просто войти в систему вручную, ожидая завершения загрузки, а затем выйдите из системы.

Почему бы не запустить скрипт perl из cronjob или выполнить программы с помощью backquotes?

Если все, что вы хотите сделать, это подключиться к вашим многочисленным серверам и запустить одну и ту же программу, вы можете сделать однократную загрузку скрипта сценария php на все ваши серверы, на которых должна выполняться команда exec() из входных данных (скорее всего, из $_POST или $_GET ). Затем вы пишете локальный скрипт, который отправит командную строку для запуска вашей программы ко всем сценариям exec на всех ваших серверах, поэтому по существу команда ввода для запуска любой требуемой программы будет выполнять команду на каждом сервере.

Очевидно, вам понадобится аутентификация для скрипта exec, чтобы никто не мог злоупотреблять вашими серверами. Причина в том, что вся эта вещь не подходит, если программа, которую вы запускаете, требует большого взаимодействия (вы сказали, что хотите запустить программу, что означает, что вы хотите ее выполнить и оставить ее для того, чтобы она сделала свое дело)

Почему бы не использовать FTP для чего вам нужно? затем сгенерировать и выполнить файлы с помощью простых команд microsoft.

Я думаю, было бы лучше настроить демон / службу на сервере, с которой вы хотите подключиться и установить связь с ней через TCP. В этом случае вы можете реализовать любой протокол, который вы хотите.