Как выполнить скрипт оболочки, когда кто-то изменяет файл через FTP?

Как выполнить скрипт оболочки, когда кто-то изменяет файл через FTP?

Я использую Ubuntu 15.04 Server на VPS. Я пытаюсь сделать так, чтобы мой друг мог изменить файл конфигурации игрового сервера через FTP, а затем, когда это будет сделано, выполнить скрипт оболочки, который убивает сервер и перезапускает его. Спасибо!

решение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файл, разрешающий доступ только к интересующей услуге.

Связанный контент