誰かが FTP 経由でファイルを変更したときにシェル スクリプトを実行するにはどうすればよいでしょうか?

誰かが FTP 経由でファイルを変更したときにシェル スクリプトを実行するにはどうすればよいでしょうか?

私は VPS で Ubuntu 15.04 Server を実行しています。友人が FTP 経由でゲーム サーバーの構成ファイルを変更できるようにし、変更が完了したらサーバーを強制終了して再起動するシェル スクリプトを実行できるようにしたいと考えています。よろしくお願いします。

答え1

アップロード後にスクリプトを実行する

pureftpd提供するpure-uploadscriptゲームのプロセスを再開するために使用できます:

説明

--with-uploadscriptPure-FTPd が(バイナリ ディストリビューションのデフォルト)でコンパイルされ、 -o(または --uploadscript) がサーバーに渡されると、 という名前付きパイプ/var/run/pure-ftpd.upload.pipeが作成されます。また、ロックに使用される という重要なファイルがあることにも気づくでしょう /var/run/pure-ftpd.upload.lock。アップロードが成功すると、ファイル名がパイプに書き込まれます。 は pure-uploadscript このパイプを読み取り、新しくアップロードされたファイルを処理するためのプログラムまたはスクリプトを自動的に実行します。

(からマニュアルページ

これを使用して、ゲーム設定ファイルの変更を検出します (アップロード/変更されたファイルは、スクリプトの最初の引数として渡されます$1)。変更されている場合は、ゲーム サーバーを再起動します。

bashそうでなければ、スクリプトを使用して設定ファイルcronを確認しmtime、新しいものに変更された場合はサーバーを再起動することができます。または、本当に素敵そしてinotify次のようなものでフックするinotify-tools; しかし、これはやり過ぎかもしれません。

答え2

使用している、または使用する予定であると仮定するとプロトコルモジュールを使用することができますモジュールファイルが変更されたときにコマンドを実行します。

しかし、これはお勧めしません。サービスを再起動するには、制御されたリモートセッションを使用する必要があります。これは、最小限の権限を持つユーザーで実行でき、sudo ユーザ関心のあるサービスへのアクセスのみを許可するファイル。

関連情報