我们运行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权限,所以可以根据需要做任何事情。
喜欢听到您的想法/解决方案,并且很乐意回答任何问题。
答案 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 {} \;