1

CentOS WHM/cPanel VPS を約 230 のクライアントで実行しており、そのほとんどが独自の CMS ソフトウェアを使用しています。ソフトウェアにはバージョニングとアップデートが組み込まれていますが、さまざまな理由により、一部のサイトではこれがアクティブ化されていないため、プッシュしたいアップデートに使用できません.

ある場所から新しい (この例では) updates.php を取得し、サーバー上の各ユーザーの public_html/admin/updates.php に存在する他の update.php を置き換える方法を探しています。

更新が必要なファイルは、それを持っている VPS 上のすべてのユーザーの同じリライブ パス (つまり、/home/[USERNAME]/public_html/admin/updates.php) にあります。明らかに、それを持っていないユーザーはスキップする必要があります (updates.php ファイルをあちこちに作成しないようにするためです。

私たちの PHP も SuExec の下で実行するようにセットアップされているため、単純に PHP スクリプトを記述して実行することはできません。したがって、何らかのシェルを介して実行する必要があると仮定すると、これは私が得意とすることではありません。そうは言っても、私はルートアクセス権を持っているので、必要に応じてそこで何でもできます.

あなたのアイデア/解決策を聞くのが大好きで、どんな質問にも喜んで答えます.

4

2 に答える 2

1

このようなシェルスクリプトを書く

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

于 2013-01-05T11:56:10.227 に答える
0

このファイルの名前が upgrade.php で、それがユーザー ディレクトリにある唯一の upgrade.php である場合は、これを使用することを検討してください。

find /home/ -name upgrade.php -exec cp -p /path/to/new_upgrade {} \;
于 2013-01-05T12:09:24.943 に答える