2013-05-09 61 views
0

我需要在PHP的远程web服务器上执行bash script。请求源自web1通过PHP并需要在另一个web服务器web2上执行bash脚本。 web1可以通过SSH登录到web2所有本地流量,但通过PHP做SSH实在是很讨厌,运行exec("ssh [email protected] ./bash_script")似乎是一个可怕的安全想法。另外,试图从bash脚本中公开某种类型的HTTP接口似乎是错误的方法。如何从PHP执行远程bash脚本

建议什么?是否有任何跨语言和远程执行库或框架?

想到我可以在Node.js中编写一个简单的包装来执行bash脚本,并且生活在web2上。 web1只是通过HTTP访问node.js包装器。

谢谢。

+0

我相信后者是一个更好的选择。 – Hameed 2013-05-09 04:09:29

+0

为什么不让web1联系web2执行bash_script的php文件? Web2可以通过IP验证它是否为web1。 – 2013-05-09 04:12:56

+0

@DaveChen PHP'exec()'是阻塞的,如果我使用node.js,我可以派发每个请求来运行bash脚本的单独线程。 – Justin 2013-05-09 04:14:46

回答

0

您可以使用rexec命令。 rexec将帮助您执行远程命令。

rexec [ -abcdhns -l username -p password ] host command 

有关更多详细信息,请参见this

+0

'rexec'是否使用SSH?我不关注服务器如何通信?有''我必须安装在'web2'守护进程? – Justin 2013-05-09 04:18:53

+0

'rexec'是一个linux命令,它不使用SSH。我在我的网络服务器中使用了相同的命令来安排备份作业。我真的不知道'rexec'是如何工作的。一个缺点是,您的用户名和密码通过网络以纯文本形式发送。 – 2013-05-09 04:27:01

+0

请看看这个。 http://jpsoft.com/help/index.htm?rexec.htm – 2013-05-09 04:34:13