-
Notifications
You must be signed in to change notification settings - Fork 0
/
util-file-monitor.sh
165 lines (142 loc) · 3.81 KB
/
util-file-monitor.sh
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
#!/bin/bash
# Author:
# Herbert Mattei de Borba <[email protected]>
#
# Tudo sera feito com base nisso, find precisa ser compativel:
# find /tmp/test/ -mmin -5 -type f -exec ls {} +
#
MYDIR=`dirname $0`
. ${MYDIR}/common-setup.sh
#######
######
####
## REMOVER NA PRODUCAO
########
#EMAILTO="[email protected]"
DEFAULT_TEMPO_MOD=5
DEFAULT_TEMPO_VER=30
function showusage {
echo "Modo de usar: ${MYNME} -s <arquivo_ou_pasta_a_monitorar> [-m <tempo_de_modificacao_em_minutos>]"
echo " -s <arquivo_ou_pasta_a_monitorar>: O arquivo ou pasta que sera monitorado."
echo " -c <tempo_de_modificacao_em_minutos> (opcional): O arquivo sera considerado modificado se for mais novo que este parametro. Default: ${DEFAULT_TEMPO_MOD}"
#echo " -t <tempo_de_verificacao_em_minutos> (opcional): O arquivo sera verificado periodicamente com base neste parametro. Default: ${DEFAULT_TEMPO_VER}"
#echo " -d (opcional): Roda em modo daemon."
echo " -o: (opcional) Envia email apenas se houve modificacao."
echo " -m: (opcional) Nao envia email com os logs de execucao."
exit ${ERROR}
}
ARGV=${@}
if [ "x$ARGV" = "x" ] ; then
set_error $ERR_ARGUMENT_NOT_FOUND
showusage
fi
arquivo_mon=""
tempo_mod=""
tempo_ver=""
run_as_daemon="nao"
opt_send_mail="sim"
opt_email_mod_only="nao"
while getopts "s:c:t:dmo" option ; do
case "${option}" in
s)
arquivo_mon=${OPTARG}
;;
c)
tempo_mod=${OPTARG}
;;
t)
tempo_ver=${OPTARG}
;;
d)
run_as_daemon="sim"
;;
m)
opt_send_mail="nao"
;;
o)
opt_email_mod_only="sim"
;;
?)
set_error $ERR_INVALID_PARAMETER
showusage
;;
esac
done
if [[ "x${arquivo_mon}" == "x" ]] ; then
set_error $ERR_ARGUMENT_NOT_FOUND
showusage
else
if [[ ! -e ${arquivo_mon} ]] ; then
do_log "Arquivo ou pasta \"${arquivo_mon}\" nao foi encontrado."
showusage
fi
fi
if [[ "x${tempo_mod}" != "x" ]] ; then
if [[ "x$(is_an_integer $tempo_mod)" != "xsim" ]] ; then
do_log "Numero invalido."
set_error $ERR_INVALID_PARAMETER
showusage
fi
else
tempo_mod=$DEFAULT_TEMPO_MOD
fi
if [[ "x${tempo_ver}" != "x" ]] ; then
if [[ "x$(is_an_integer $tempo_ver)" != "xsim" ]] ; then
do_log "Numero invalido."
set_error $ERR_INVALID_PARAMETER
showusage
fi
else
tempo_ver=$DEFAULT_TEMPO_VER
fi
verifstr="arquivo"
if [[ -d ${arquivo_mon} ]] ; then
verifstr="diretorio"
fi
do_log ""
do_log "${DATA_EXEC} '${MYNME}'"
do_log "Utilitario para monitoramento de arquivos ou pastas."
do_log "Usuário: ${USRDATA}"
do_log ""
do_log "Verificando se o ${verifstr} \"${arquivo_mon}\" foi modificado nos ultimos ${tempo_mod} min."
do_log ""
datahoraexec=$(get_now_for_log)
origemesc=$(echo ${arquivo_mon} | sed 's/\//\%/g')
pathnmtmp="${TEMP_PATH}/_temp_${MYNME}-${origemesc}-${datahoraexec}.txt"
find ${arquivo_mon} -mmin -${tempo_mod} -type f -exec ls -l {} + > ${pathnmtmp}
nummod=`cat ${pathnmtmp} | wc -l`
detalhes=`cat ${pathnmtmp}`
if [[ ${verifstr} == "arquivo" ]] ; then
if [[ ${nummod} > 0 ]] ; then
do_log "Arquivo foi modificado."
do_log ""
do_log "Detalhes:"
do_log ""
do_log "${detalhes}"
else
do_log "Arquivo nao foi modificado."
fi
else
if [[ ${nummod} > 0 ]] ; then
do_log "Diretorio possui arquivos modificados."
do_log ""
do_log "Detalhes:"
do_log ""
do_log "${detalhes}"
else
do_log "Diretorio nao possui arquivos modificados."
fi
fi
do_log ""
do_log "$(get_now) Procedimento '${MYNME}' concluido."
do_log ""
if [[ "x${opt_send_mail}" == "xsim" ]] ; then
if [[ "x${opt_email_mod_only}" == "xsim" ]] ; then
if [[ ${nummod} > 0 ]] ; then
$(send_email "Mudancas detectadas em \"${arquivo_mon}\"")
fi
else
$(send_email "Verificando mudancas em \"${arquivo_mon}\"")
fi
fi
exit $(get_error)