首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ftp_exec():未知站点命令

问ftp_exec():未知站点命令
EN

Stack Overflow用户
提问于 2015-09-15 05:54:57
回答 1查看 1.9K关注 0票数 1

我需要从php运行一个linux命令。所以我使用了ftp_exec()函数。

代码语言:javascript
复制
 $command='ls -al> /ftp_test/t.log';
 if (ftp_exec($ftp_conn,$command))
   {
     echo "$command executed successfully.";
   }
   else
   {
   echo "Execution of $command failed.";
   }

但它给了我警告

警告: ftp_exec():未知站点命令

我在googled上搜索了ftp_exec,并发现“通过FTP执行并不是很受支持。在开始编写需要此功能的代码之前,请检查它是否工作在您想要连接的服务器上。”

有人能告诉我从php运行linux命令的想法吗?

EN

回答 1

Stack Overflow用户

发布于 2015-09-15 06:08:52

如果您有适当的授权,您可以通过SSH这样做:

代码语言:javascript
复制
$file_list = shell_exec('ssh user@site "ls -la"');

您将需要user拥有site的授权ssh密钥,并且用户必须可以从运行site的任何用户中访问。这通常归结为两者都使用了用户wwwrun。

或者您可以使用sudo来增加安全性,方法是将命令放入自己的脚本中,然后执行以下操作:

代码语言:javascript
复制
$file_list = shell_exec('sudo /usr/local/bin/ssh-ls-site');

现在可以允许用户wwwrun运行ssh-ls-site,但不能修改其内容,因此他不能运行任意命令,也不能访问ssh授权键。

ssh-ls-site可以记录请求以及更新本地标记文件,如果该文件比特定的保护时间新,则立即退出。这将防止针对站点的可能的DoS攻击(运行大量允许的命令、耗尽资源),并提高性能;例如,如果需要经常运行命令,则可以将结果保存到临时文件中。然后,如果发现该文件存在,并且不太老,您只需读取它的内容,而不是向@site请求它,从而有效地在本地缓存命令。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32578654

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档