Como posso executar um script de shell quando alguém altera um arquivo através de FTP?

0

Estou executando o Ubuntu 15.04 Server em um VPS. Estou tentando fazer com que meu amigo pode alterar um arquivo de configuração para um servidor de jogo através de FTP, e então, quando isso é feito executar um script shell que mata o servidor e reinicia-lo. Obrigado!

    
por Dash 03.08.2015 / 15:46

2 respostas

0

Executar um script após o upload

pureftpd fornece pure-uploadscript , que você pode usar para reiniciar o processo do jogo:

DESCRIPTION

If Pure-FTPd is compiled with --with-uploadscript (default in binary distributions), and if the -o (or --uploadscript) is passed to the server, a named pipe called /var/run/pure-ftpd.upload.pipe is created. You will also notice an important file called /var/run/pure-ftpd.upload.lock, used for locking. After a successful upload, the file name is written to the pipe. pure-uploadscript reads this pipe to automatically run any program or script to process the newly uploaded file.

(da página de manual )

Use isto para detectar uma mudança no arquivo de configuração do jogo [s] (o arquivo carregado / modificado é passado como o primeiro argumento para o script- $1 ), e se eles forem alterados, reinicie o servidor do jogo.

Caso contrário, você pode usar alguns bash scripting e cron para verificar o mtime do arquivo de configuração e reiniciar o servidor se ele mudar para algo mais novo. Ou você pode ter muito bom e colocar inotify em algo como inotify-tools ; mas isso é provavelmente um exagero para isso.

    
por 03.08.2015 / 15:55
0

Assumindo que você está usando, ou usará proftpd , você pode usar o módulo mod_exec e execute um comando quando o arquivo for alterado.

No entanto, eu não recomendo isso - você deve usar uma sessão remota controlada para reiniciar o serviço. Isso poderia ser feito com um usuário de menor privilégio e, em seguida, a especificação correta do sudoers arquivo para permitir acesso somente ao serviço de interesse.

    
por 03.08.2015 / 16:00