¿Cómo puedo ejecutar un script de shell cuando alguien cambia un archivo a través de FTP?

¿Cómo puedo ejecutar un script de shell cuando alguien cambia un archivo a través de FTP?

Estoy ejecutando el servidor Ubuntu 15.04 en un VPS. Estoy intentando que mi amigo pueda cambiar un archivo de configuración para un servidor de juegos a través de FTP, y luego, cuando haya terminado, ejecute un script de shell que cierre el servidor y luego lo reinicie. ¡Gracias!

Respuesta1

Ejecute un script después de la carga

pureftpdproporcionapure-uploadscript, que puedes usar para reiniciar el proceso del juego:

DESCRIPCIÓN

Si Pure-FTPd se compila con --with-uploadscript(predeterminado en distribuciones binarias) y si -o(o --uploadscript) se pasa al servidor, /var/run/pure-ftpd.upload.pipese crea una canalización con nombre llamada. También notará un archivo importante llamado /var/run/pure-ftpd.upload.lock, que se utiliza para bloquear. Después de una carga exitosa, el nombre del archivo se escribe en la tubería. pure-uploadscript lee esta tubería para ejecutar automáticamente cualquier programa o script para procesar el archivo recién cargado.

(desde elpágina de manual)

Utilice esto para detectar un cambio en los archivos de configuración del juego (el archivo cargado/modificado se pasa como primer argumento del script $1) y, si se modifican, reinicie el servidor del juego.

De lo contrario, podría utilizar algunas bashsecuencias de comandos cronpara verificar el mtimearchivo de configuración y reiniciar el servidor si cambia a algo más nuevo. O podrías conseguirrealmente elegantey enganchar inotifya través de algo comoinotify-tools; pero probablemente sea excesivo para esto.

Respuesta2

Suponiendo que esté usando o usaráproftpdentonces puedes usar el módulomod_execy ejecutar un comando cuando se cambia el archivo.

Sin embargo, no recomiendo esto; debe utilizar una sesión remota controlada para reiniciar el servicio. Esto podría hacerse con un usuario con privilegios mínimos y luego la especificación correcta delsudoersarchivo para permitir únicamente el acceso al servicio de interés.

información relacionada