可以用PHP连接到远程桌面吗?

时间:2011-12-13 06:06:06

标签: php rdp

我有一些服务器,我每隔一段时间就要经常连接一台程序。但是,为了更容易,我想让PHP脚本通过远程桌面连接到每个脚本并运行它们。这可能吗?如果是这样,我应该从哪里开始?一个例子很可爱。

10 个答案:

答案 0 :(得分:3)

没有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

通过此文档,您可以确定项目的可行性。

答案 1 :(得分:2)

我正在使用

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

在linux中, 其中192.168.1.131是目标IP 和1024x640是窗口大小。

您也可以使用

rdesktop -u username -p password 192.168.1.131 -f 

全屏。

不要忘记用您的详细信息替换用户名和密码。

答案 2 :(得分:0)

我认为最好是服务器运行可以连接的服务。例如,他们可能正在运行Web服务(例如php,如果这是您想要的语言)。然后,您可以通过可以运行应用程序的端口80连接到该Web地址。当然,您有安全问题,但您应该能够配置它们,以便它们只接受来自某些IP的请求。或者,您可以使脚本受密码保护

答案 3 :(得分:0)

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到php,你的客户端会调用curl(127.0.0.1/?key=loooong&command=blah)之类的东西,服务器会运行exec(“传递命令”)

答案 4 :(得分:0)

vmware Esxi使用这样的ui页面而不是PERL应用程序。阅读答案后,这似乎是一个真正的挑战。我正在为基于Web的主机访问工作。如果我完成了某件事,我很乐意与您分享。

https://labs.vmware.com/flings/esxi-embedded-host-client

答案 5 :(得分:-1)

老实说,你最好的选择是C#。这可能不是你想听到的,但用这种语言创建一个rdp客户端是非常简单的。

如果您被允许创建有权访问日志的用户。我会做一些在用户连接时运行的东西。该程序会将日志上传到具有FTP访问权限的unix服务器。

然后即使您不能在C#中编写单击解决方案,您至少可以手动登录等待上传完成然后注销。

答案 6 :(得分:-1)

为什么不从cronjob运行perl脚本或用反引号执行程序?

答案 7 :(得分:-1)

如果您要做的就是连接到许多服务器并运行相同的程序,您可以将php执行脚本一次性上传到所有应该exec()输入命令的服务器数据(最有可能来自$_POST$_GET)。然后编写一个本地脚本,它将发送命令字符串以将程序运行到所有服务器上的所有exec脚本,因此基本上键入命令以运行您需要的任何程序将在每个服务器上执行该命令。

显然,您需要对exec脚本进行身份验证,以免任何人滥用您的服务器。当然,如果你运行的程序需要很多交互(你说你想运行一个程序,这意味着你想要执行它并将它留给它,那么整个事情就不合适了)做它自己的事情)

答案 8 :(得分:-1)

为什么不使用FTP来满足您的需求? 然后用简单的命令microsoft生成并执行文件。

答案 9 :(得分:-1)

我认为最好在要连接的服务器上设置守护进程/服务,并通过TCP与之通信。在这种情况下,您可以自由地实现任何协议。