Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/laravel/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Apache 运行BASH-cgi脚本_Apache_Bash - Fatal编程技术网

Apache 运行BASH-cgi脚本

Apache 运行BASH-cgi脚本,apache,bash,Apache,Bash,我不是根。我已经在apache服务器的cgi bin中编写并放置了一个脚本。这里的代码太长,但简而言之,脚本是从浏览器调用的,文件名参数也是作为URL参数传递的。脚本获取文件名,找到文件并读取它。该文件包含要复制的文件/位置的简单列表。脚本迭代文件的每一行,并使用ssh和标准rsync命令将该行上的文件从当前服务器复制到远程服务器。这些都是很标准的东西 脚本从命令行完美运行,所有文件都被正确复制。从浏览器启动时,脚本似乎运行正常。它不会抛出错误,调试日志告诉我所有内容都复制得很好,只是实际文件本

我不是根。我已经在apache服务器的cgi bin中编写并放置了一个脚本。这里的代码太长,但简而言之,脚本是从浏览器调用的,文件名参数也是作为URL参数传递的。脚本获取文件名,找到文件并读取它。该文件包含要复制的文件/位置的简单列表。脚本迭代文件的每一行,并使用ssh和标准rsync命令将该行上的文件从当前服务器复制到远程服务器。这些都是很标准的东西

脚本从命令行完美运行,所有文件都被正确复制。从浏览器启动时,脚本似乎运行正常。它不会抛出错误,调试日志告诉我所有内容都复制得很好,只是实际文件本身没有被复制


我假设它与由apache(或wwwroot)在cgi bin中运行的脚本有关,而cgi bin并不像我那样是脚本所有者。因为我不是root,所以我不能更改所有权或使用sudo。有什么办法可以让它工作吗?

从安全角度看,你现在做的事情似乎很危险。。。BASH真的是这样做的合适工具吗?另外,为什么这个脚本需要SSH或运行rsync来复制文件?在标准服务路径中,这听起来像是一个非常昂贵的操作(这可能是一个预计算)。请告诉我,你已经确保了这件事的安全性,不知何故,您需要脚本运行的任何用户都具有从所需位置读取和写入文件的权限。谢谢您的评论。这是在一个安全的封闭内部网上,只有两个人可以访问服务器。目前,这只是一个练习,看看是否可以做到,所以请不要理会你头脑中的钟声。ssh不用于rsync,但用于在远程服务器上创建目标目录(如果不存在),很抱歉,我应该更清楚地说明这一点。由于从浏览器运行时脚本是非交互式的,您必须配置无密码登录,对吗?您为哪个用户创建了无密码登录?如果它是针对shell用户而不是apache用户的,则第二种情况下非交互式scp/rsync将失败。我建议以apache或www数据登录,并启用无密码登录。您可能必须编辑/etc/passwd才能作为Web服务器用户登录