Wie kann ich ein Shell-Skript ausführen, wenn jemand eine Datei über FTP ändert?

Wie kann ich ein Shell-Skript ausführen, wenn jemand eine Datei über FTP ändert?

Ich verwende Ubuntu 15.04 Server auf einem VPS. Ich versuche, es so einzurichten, dass mein Freund eine Konfigurationsdatei für einen Spieleserver über FTP ändern und dann, wenn das erledigt ist, ein Shell-Skript ausführen kann, das den Server beendet und dann neu startet. Danke!

Antwort1

Ausführen eines Skripts nach dem Hochladen

pureftpdbietetpure-uploadscript, mit dem Sie den Spielvorgang neu starten können:

BESCHREIBUNG

Wenn Pure-FTPd mit kompiliert wird --with-uploadscript(Standard in Binärdistributionen) und -o(oder --uploadscript) an den Server übergeben wird, /var/run/pure-ftpd.upload.pipewird eine benannte Pipe namens erstellt. Sie werden auch eine wichtige Datei namens bemerken /var/run/pure-ftpd.upload.lock, die zum Sperren verwendet wird. Nach einem erfolgreichen Upload wird der Dateiname in die Pipe geschrieben. pure-uploadscript liest diese Pipe, um automatisch jedes Programm oder Skript auszuführen, das die neu hochgeladene Datei verarbeitet.

(von demmanpage)

Verwenden Sie dies, um eine Änderung in der/den Konfigurationsdatei(en) des Spiels zu erkennen (die hochgeladene/geänderte Datei wird als erstes Argument an das Skript übergeben $1) und starten Sie den Spielserver neu, wenn sie geändert werden.

Andernfalls könnten Sie einige bashSkripte verwenden und die Konfigurationsdatei cronüberprüfen und den Server neu starten, wenn er sich auf etwas Neueres ändert. Oder Sie könntenmtimewirklich schickund Haken inotifyüber so etwas wieinotify-tools; aber das ist hierfür wahrscheinlich übertrieben.

Antwort2

Vorausgesetzt, Sie verwenden oder werden verwendenproftpddann können Sie das Modul verwendenmod_execund führen Sie einen Befehl aus, wenn die Datei geändert wird.

Ich empfehle dies jedoch nicht - Sie sollten eine kontrollierte Remote-Sitzung verwenden, um den Dienst neu zu starten. Dies könnte mit einem Benutzer mit den geringsten Berechtigungen und anschließender korrekter Angabe dersudoersDatei, um nur den Zugriff auf den gewünschten Dienst zuzulassen.

verwandte Informationen