8
votes

Possible de se connecter au bureau distant avec PHP?

J'ai quelques serveurs que je voudrais me connecter à chaque fois pour exécuter un programme. Cependant, pour faciliter la tâche, je voudrais établir un script PHP Connectez-vous à chacun d'eux via un bureau à distance et de gérer chacune d'elles. Est-ce possible? Si oui, où devrais-je commencer? Un exemple serait charmant.


8 commentaires

Vous souhaitez utiliser RDP pour vous connecter et exécuter un script PHP sur un serveur? Je pouvais voir une session VPN / SSH.


Oui, son éventuel script PHP ne sera pas plus facile que d'autres moyens tels que C ++ ou un script shell


Peut-être que ceci: php.net/manual/fr/book.sam.php


Le pire des cas, vous pouvez simplement ouvrir une prise via PHP et communiquer en arrière. Vous auriez besoin d'inverser l'ingénieur / mettre en œuvre le protocole cependant. Il devrait y avoir une meilleure solution pour cela, comme un travail / planificateur de cron sur le serveur lui-même.


@Deceze ouais, je pensais simplement ouvrir une prise, mais je ne voulais pas prendre le temps de renifler la connexion et de reconstruire une connexion normale pour l'instant, au cas où il y a un moyen plus simple de le faire


Quel genre de protocole de bureau à distance? Comment les programmes sont-ils invoqués? Par un clic? Quel type de système d'exploitation est-ce?


Windows Server 2003 et 2008. J'imagine par un clic, oui, mais je suis sûr qu'il y a un moyen d'imiter cela.


J'ai traduit votre demande de signification: code PHP qui est un serveur de style RDP. Avec cela à l'esprit, même si sa réponse n'a pas répondu à votre question, je suis d'accord avec @timur. Cela pourrait ne pas être aussi compliqué que certains non-jouets ont indiqué. Écrivez un script PHP qui capture la fenêtre de premier plan (ou des morceaux de celui-ci) et envoie l'image à la page Web. Faites de la page Web Capturez la souris cliquez sur les coordonnées et les frappes de frappe, et les pipes d'Ajax à travers PHP et à la fenêtre de premier plan. Récupérez la fenêtre de premier plan de tous ces temps et BAM - Bureau à distance via PHP. Je pense que c'est une idée stellaire.


11 Réponses :


0
votes

Je pense que c'est mieux si les serveurs exécutent un service que vous pourriez vous connecter. Par exemple, ils pourraient exécuter un service Web (par exemple Php si c'est votre langue désirée). Vous pouvez ensuite vous connecter à cette adresse Web via le port 80 qui pourrait exécuter les applications. Bien sûr, vous avez des problèmes de sécurité, mais vous devriez être capable de les configurer afin qu'ils n'acceptent que des demandes de certains IP. Sinon, vous pouvez rendre le script protégé par mot de passe


2 commentaires

Cela fonctionnerait, mais j'ai beaucoup. Ce serait une douleur pour configurer un httpd sur chacun d'eux.


Vous n'avez pas besoin de configurer un service Web, créez simplement un script PHP qui écoute sur un certain port.



3
votes

Aucun PHP ne peut pas utiliser RDP pour vous connecter au serveur. Ils peuvent utiliser SSH ou FTP ou une prise à un port d'écoute.

Ce que vous demandez est un peu fou !!! =) p>

EDIT: P>

Depuis que vous insistez sur le faire ici, c'est ce dont vous avez besoin: p>

[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


4 commentaires

Pourquoi est-ce fou? Le serveur compatible RDP n'écouterait pas sur le port 3389, alors je suis sûr que je pouvais l'imiter avec une prise ...


RDP vous donnera des graphiques, vous permettra de contoler la souris et le clavier. Écrire une application pour faire ce que vous voulez faire vraiment est fou et sera un peu difficile, ce n'est pas comme votre connexion à une console et peut exécuter la commande dirrectement de cela.


Mon point est en train d'émuler, ce sera difficile ... mais éventuellement faisable. Faire quelque chose d'utile et faire ce que vous voulez est difficile ^ 2. Ce serait un Cinch de faire si vous avez activé SSH a écrit votre propre écouteur PHP sur le serveur distant. C'est ce que je ferais!


Je suis d'accord avec Timothy Martens, tandis que cela pourrait en théorie être possible, c'est une folie totale d'essayer de le faire. SSH est une option beaucoup plus judicieuse.



-1
votes

honnêtement, vous êtes meilleur parier serait C #. Ce n'est probablement pas ce que vous voulez entendre, mais il est extrêmement trivial de faire un client RDP dans cette langue.

Si vous êtes autorisé à créer un utilisateur qui a accès aux journaux. Je ferais quelque chose qui fonctionnerait lorsque l'utilisateur est connecté. Le programme téléchargerait les journaux sur un serveur UNIX contenant un accès FTP.

Puis même si vous ne pouvez pas écrire une solution en un clic dans C #, vous pouvez au moins vous connecter simplement à vous connecter manuellement pour que le téléchargement soit effectué puis vous déconnectez.


2 commentaires

Parfait, écrivez un petit programme en C #, puis appelez-le de PHP. Cela me semble être une bonne idée.


Personne n'a dit écrire quelque chose en C # puis appelez-le de PHP. Ce serait asinine. Tentative d'écrire un client RDP dans PHP est tout aussi asinine, ce qui est pourquoi j'ai suggéré d'utiliser C #. Je suggère une mauvaise et une meilleure façon de faire ce qu'il voulait faire et je me laisse voter pour cela. Ce qui est encore plus drôle, c'est que j'ai dû résoudre le même problème que l'OP a eu. J'ai résolu avec la réponse ci-dessus, donc je sais pour un fait cela fonctionne. J'ai écrit un client RDP en C # qui bougerait via une liste d'hôtes, de vous connecter, d'exécuter une commande, puis de vous déconnecter.



9
votes

En théorie, vous pouvez impliquer un script PHP qui pourrait communiquer avec un serveur dans le protocole RDP, mais je ne voudrais certainement pas essayer de créer un script pouvant faire quelque chose de significatif, car RDP est conçu pour exposer une machine distante. L'interface utilisateur sur le client connecté et PHP est construite avant tout manipuler du texte.

Si vous souhaitez qu'un script PHP contrôler à distance un autre ordinateur, SSH est une option beaucoup plus judicieuse, car PHP pourrait facilement se connecter à la CLI de la CLI de l'amumeur distant et à des commandes émettrices au serveur via des commandes de shell, qui sont textuelles et donc facilement généré avec PHP.

D'autre part, l'interface avec l'ordinateur distant avec RDP serait extrêmement difficile. Pensez simplement à cliquer sur une icône pour obtenir une liste de répertoires pour un début. Vous devez d'abord déterminer où se trouve le pointeur de la souris, que l'icône que vous souhaitez cliquer est visible et si oui, où sa boîte à bornes est relative au pointeur de la souris. Vous devez alors lancer des commandes pour déplacer le pointeur de la souris dans la zone de sélection, puis vérifier que le pointeur de la souris est au bon endroit (un utilisateur distant local ou autre peut déplacer la souris autour), puis émettre une paire de clique avec un court délai entre eux.

Cela va être beaucoup plus difficile que d'émettre des fichiers «CD C: \ Program Files \» suivi de «dir», par exemple.


1 commentaires

Pour aggraver davantage la difficulté, même si le protocole RDP était ingénieur inverse et que le script PHP déplaçait une souris sur des coordonnées connues ... Les paramètres d'affichage que les utilisations de RDP utilisent peuvent être incohérents. Il n'y aurait donc aucune garantie qu'une icône serait située au même endroit chaque session. Le script hypothétique peut finir par simplement envoyer des clics sur une tache morte à l'écran.



-1
votes

Pourquoi ne pas exécuter un script Perl d'un cronjob ou exécuter les programmes avec les backquotes?


0 commentaires

-1
votes

Si tout ce que vous voulez faire, c'est de vous connecter à vos nombreux serveurs et d'exécuter le même programme, vous pouvez effectuer un téléchargement unique d'un script PHP Execute sur tous vos serveurs qui devraient EXEC () Une commande de données d'entrée (le plus probablement à partir de _ POST _ POST ou $ _ obtenir ). Vous écrivez ensuite un script local, qui enverra la chaîne de commande pour exécuter votre programme à tous les scripts Exec sur tous vos serveurs, en tapant essentiellement la commande pour exécuter le programme que vous devez exécutera la commande sur chaque serveur.

Évidemment, vous devez nécessiter une authentification pour votre script Exec afin que personne ne puisse abuser de vos serveurs. De cause, tout cela ne conviendrait pas si le programme que vous courez nécessite beaucoup d'interaction (vous avez dit que vous vouliez gérer un programme, ce qui implique que vous souhaitiez l'exécuter et de le laisser Est-ce que c'est sa propre chose)


0 commentaires

0
votes

La raison pour laquelle la PPL ne recommande pas RDP de faire cela est que RDP n'a aucune API de faire même à distance ce que vous voulez réellement. Le moyen le plus simple de le faire tout en restant dans vos exigences, consiste à installer l'un des logiciels ci-dessous sur les machines hôtes. Ensuite, vous auriez besoin d'une API pour vous connecter:

  • ceci: http://www.codeproject.com/kb/system /RemoteExec.aspx . Dans PHP, tout ce dont vous auriez besoin, c'est quelque chose d'aussi simple que EXED ("REXEC 123.21.61.12 NotePad.exe" \ FileServer1 \ Test FileT.txt ") (Vous pouvez le modifier pour accepter une clé pour un peu de sécurité)

  • TeamViewer (gratuit): http://www.teamviewer.com/ FR / Produits / RemoteControl.aspx Ensuite, vous utiliseriez TeamViewer WebConnect pour vous connecter via PHP

  • openvpn (open source) n'est pas sûr s'il y a une API qui vient avec elle, mais je ne serais pas surpris

  • Connectez-vous (comme ci-dessus)

  • Installez WAMP sur les hôtes, puis demandez à PHP exécuter les commandes sur elles. Donc, ce serait quelque chose comme php à php où votre client appellerait quelque chose comme Curl (127.0.0.1/?key=loooong&command=blah) et le serveur exécuterait EXEC ("Commande passée")


0 commentaires

-1
votes

Pourquoi ne pas utiliser FTP pour ce dont vous avez besoin? Ensuite, génèverez et exécutez des fichiers avec des commandes simples Microsoft.


0 commentaires

-1
votes

Je pense qu'il serait préférable de configurer le démon / service sur le serveur sur lequel vous souhaitez vous connecter et communiquer avec elle via TCP. Dans ce cas, vous êtes libre de mettre en œuvre n'importe quel protocole que vous souhaitez.


0 commentaires

2
votes

J'utilise xxx pré>

sous Linux, où 192.168.1.131 est l'adresse IP de destination et 1024x640 est la taille de la fenêtre. P>

Aussi vous pouvez utiliser P>

rdesktop -u username -p password 192.168.1.131 -f 


1 commentaires

S'il vous plaît partagez votre code PHP avec moi. Aussi version OS et version Apache2 et version PHP.



0
votes

VMware ESXI utilise une page d'assurance-emploi mais non avec une application Perl, après avoir lu les réponses, il semble un véritable défi. Je travaille sur une telle chose pour l'accès à mes hôtes Web. Si je reçois quelque chose, je serai heureux de partager avec vous.

https://labs.vmware.com/flings/esx-Emenedded -host-client


0 commentaires