segunda-feira, 25 de janeiro de 2016

INotify - Monitorando ocorrências com arquivos e diretórios

Para monitorar o que ocorre com arquivos ou diretórios podemos utilizar o serviço "inotify".
Nessa dica será mostrado apenas como monitorar especificamente um diretório e executar ações relativos a ação ocorrida.
Mais informações sobre o sistema inotify pode ser vista nesse link.
Abaixo segue um pequeno shell-script que apenas mostra as ações que ocorreram jogando as informações para um comando "while" e então tratando-as.Nesse cado, especificamente, apenas mostra na tela mas pode até mandar mensagens, e-mail, desligar o computador, fazer uma ligação ou sei lá o que sua imaginação possa imaginar. rsrs

Crie um arquivo monitora.sh

#!/bin/bash
  clear
  inotifywait -q -r -m $1 -e access,modify,attrib,close_write,move,create,delete | while read caminho ocorrencia arquivo;
    do
       echo ": $ocorrencia - ${caminho}${arquivo}"
    done


Para monitorar o diretório basta usar "./monitora.sh ". 
Nesse exemplo apenas é mostrado na tela as ocorrências monitoradas. O comando colocado entre "do" e "done" definirá a ação a ser executada. Então, nesse ponto, entra a criatividade.

Entendendo o comando:

inotifywait - aguarda por mudanças utilizando o inotify de arquivos/diretórios
   -q = Determina que mensagens do sistema, que não sejam exatamente o status esperado, seja ocultado.
   -r = Todos os subdiretórios também serão monitorados.
   -m= Habilita o modo "monitoramento" fazendo com que o programa seja executado continuamente.
   $1 = O parâmetro passado na linha de comando.
   -e = As funções que serão monitoradas.

Demais informações, use o man do comando inotifywait.