当有人通过 FTP 更改文件时,如何执行 shell 脚本?

当有人通过 FTP 更改文件时,如何执行 shell 脚本?

我在 VPS 上运行 Ubuntu 15.04 Server。我想让我的朋友通过 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

假设你正在使用或将使用proftpd然后你可以使用模块mod_exec并在文件改变时执行命令。

但是,我不建议这样做 - 您应该使用受控的远程会话来重新启动服务。这可以通过具有最低权限的用户来完成,然后正确指定sudoers文件仅允许访问感兴趣的服务。

相关内容