當有人透過 FTP 更改檔案時,如何執行 shell 腳本?

當有人透過 FTP 更改檔案時,如何執行 shell 腳本?

我在 VPS 上運行 Ubuntu 15.04 伺服器。我試圖讓我的朋友可以透過 FTP 更改遊戲伺服器的設定文件,然後在完成後執行 shell 腳本來終止伺服器,然後重新啟動它。謝謝!

答案1

上傳後運行腳本

pureftpd提供pure-uploadscript,您可以使用它來重新啟動遊戲進程:

描述

如果使用 Pure-FTPd 進行編譯--with-uploadscript(二進位發行版中預設),並且將-o(或 --uploadscript) 傳遞到伺服器,/var/run/pure-ftpd.upload.pipe則會建立一個名為的命名管道。您還會注意到一個名為 的重要文件 /var/run/pure-ftpd.upload.lock,用於鎖定。成功上傳後,檔案名稱將寫入管道。 pure-uploadscript 讀取此管道以自動執行任何程式或腳本來處理新上傳的檔案。

(來自線上說明頁

使用它來檢測遊戲設定檔中的更改(上傳/修改的檔案作為腳本的第一個參數傳遞$1),如果更改,則重新啟動遊戲伺服器。

否則,您可以使用一些bash腳本來cron檢查mtime配置文件,如果更改為更新的內容,則重新啟動伺服器。或者你可以得到真的很喜歡inotify並通過類似的東西掛鉤inotify-tools;但這可能有點過分了。

答案2

假設您正在使用或將要使用專業軟體然後你可以使用該模組mod_exec並在檔案更改時執行命令。

但是,我不建議這樣做 - 您應該使用受控遠端會話來重新啟動服務。這可以透過具有最小權限的使用者來完成,然後正確指定蘇多爾斯文件只允許存取感興趣的服務。

相關內容