替换VPS上大多数用户的文件(在相同的相对路径上)

时间:2013-01-05 11:43:16

标签: php file centos cpanel whm

我们运行CentOS WHM / cPanel VPS,大约有230名客户使用我们自己的CMS软件。该软件内置版本控制和更新,但由于各种原因,我们的部分网站没有激活它,因此我不能将它用于我想要推出的更新。

我正在寻找一种方法从一个位置获取一个新的(在此示例中)updates.php,并替换服务器上每个用户的public_html / admin / updates.php中存在的任何其他updates.php。

需要更新的文件位于拥有它的VPS上的每个用户都处于相同的重定向路径(即/home/[USERNAME]/public_html/admin/updates.php)。显然,任何没有它的用​​户都需要被跳过(以避免在整个地方创建updates.php文件。

我们的PHP也设置为在SuExec下运行,所以我不能简单地编写PHP脚本并运行它 - 所以假设它需要通过某种类型的shell - 这绝对不是我很好的东西在。也就是说,我确实有root权限,所以可以根据需要做任何事情。

喜欢听到您的想法/解决方案,并且很乐意回答任何问题。

2 个答案:

答案 0 :(得分:1)

编写像这样的shell脚本

for i in /home/* ; do
  if [ -d "$i" ]; then
    echo "found $i"
          if [ -f "$i/public_html/admin/updates.php" ]; then
            cp /home/updates.php $i/public_html/admin/updates.php
          fi
  fi
done

首先检查目录,即检查所有用户目录。然后在每个目录中检查更新文件是否存在。如果是这样,请将文件/home/updates.php(你应该放在那里)复制到那里。

修改:将代码放入文件applyUpdate.sh,使用chmod +x applyUpdate.sh使其可执行,然后使用./applyUpdate.sh

运行

答案 1 :(得分:0)

如果此文件的名称是upgrade.php,并且这是您在用户目录中唯一的upgrade.php,请考虑使用:

find /home/ -name upgrade.php -exec cp -p /path/to/new_upgrade {} \;