forked from SimplesIP/pabx-app
bruno
1 year ago
1 changed files with 179 additions and 0 deletions
@ -0,0 +1,179 @@ |
|||||||
|
#!/bin/bash |
||||||
|
|
||||||
|
# Definir valor para manter dados disponível |
||||||
|
# |
||||||
|
# |
||||||
|
# Argumentos Definir o número de dias para manter os log |
||||||
|
# banco e arquivos (/var/log/asterisk) |
||||||
|
# Aviso - esse argumento tornará nulo se licença |
||||||
|
# SMART estiver ativo. Licença SMART 90 dias |
||||||
|
# -t0 -> manter para 1500 dias (~4,5 anos) |
||||||
|
# -t10 -> manter por 10 dias |
||||||
|
# -t365 -> manter por um ano |
||||||
|
# Sem -t (ou apenas -t) default é -t 0 |
||||||
|
# |
||||||
|
# -- Licença |
||||||
|
# -- SMART - 90 dias default |
||||||
|
# |
||||||
|
|
||||||
|
|
||||||
|
# credenciais do banco de dados |
||||||
|
# |
||||||
|
# PASSWORD_DB |
||||||
|
# USER_DB |
||||||
|
# PORT_DB |
||||||
|
# BASE_DB |
||||||
|
# HOST_DB |
||||||
|
. /hdaux/utilitarios/scripts/credentials_db.sh |
||||||
|
|
||||||
|
|
||||||
|
# As querys que serão executadas para permitir apenas o número de dias |
||||||
|
pbx=("DELETE from pbx_audita_full where full_data_hora < " \ |
||||||
|
"DELETE from pbx_audita where aud_data < " \ |
||||||
|
"DELETE from pbx_eventos_agentes where data_operacao < " \ |
||||||
|
"DELETE from pbx_bilhetes where data_bilhete < " \ |
||||||
|
"DELETE from pbx_bilhetes_complemento where data_registro < " \ |
||||||
|
"DELETE from pbx_ura_movimento where data_reg < " \ |
||||||
|
"DELETE from pbx_pesquisa_movimento where data_reg < " \ |
||||||
|
"DELETE from pbx_classifica_reg where data_reg < " \ |
||||||
|
"DELETE from pbx_abandonadas_semretorno where abdsr_data < " \ |
||||||
|
"DELETE from pbx_campanha_registro where data_cmpr < " \ |
||||||
|
"DELETE from pbx_controle_acesso where acs_data_fim < " \ |
||||||
|
"DELETE from pbx_controle_acesso_item where acsi_data < " \ |
||||||
|
"DELETE from pbx_eventos_transbordo where data_reg < " \ |
||||||
|
"DELETE from pbx_integracao_reg where reg_data < " \ |
||||||
|
"DELETE from pbx_pesquisa_log where plog_data < " \ |
||||||
|
"DELETE from pbx_pesquisa_regitra where data_fim < " \ |
||||||
|
"DELETE from pbx_registra_classificacao where rgc_saida < " \ |
||||||
|
"DELETE from pbx_workflow_reg_envio_mensal where wkf_data_envio < " \ |
||||||
|
"DELETE from pbx_workflow_reg_envio where wkf_data_envio < " \ |
||||||
|
"DELETE from pbx_workflow_reg_envio_email where wkf_data_envio < " \ |
||||||
|
"DELETE from pbx_workflow_reg_envio_email_mensal where wkf_data_envio < ") |
||||||
|
|
||||||
|
|
||||||
|
query_keep_data_days="select prm_log_dias from pbx_parametros;" |
||||||
|
caminho_dados_txt="/etc/temporizador_de_dados.config" |
||||||
|
|
||||||
|
# /var/spool/asterisk/monitor/*.WAV |
||||||
|
function remove_audio_wav(){ |
||||||
|
|
||||||
|
find /var/spool/asterisk/monitor/ -type f -mtime +$1 -iname *.WAV -exec rm -rf {} \; |
||||||
|
|
||||||
|
} |
||||||
|
|
||||||
|
|
||||||
|
function insert_prm_log_dias_bd () { |
||||||
|
# $1 = days |
||||||
|
PGPASSWORD=$PASSWORD_DB \ |
||||||
|
psql -q -h "$HOST_DB" -U $USER_DB -d $BASE_DB -c "update pbx_parametros set prm_log_dias = $1 where Id = 1" |
||||||
|
|
||||||
|
} |
||||||
|
|
||||||
|
|
||||||
|
function set_logrotate(){ |
||||||
|
# $1 = número de dias |
||||||
|
|
||||||
|
# é mudado o rotate |
||||||
|
# Para não ser mudado o rotate remova |
||||||
|
# o cometário abaixo ou mude a string nos arquivo para logrotate |
||||||
|
# arquivos na pasta /hdaux/utilitarios/scripts/logrotate.d |
||||||
|
# auto_logrotate_licenca_PABX |
||||||
|
|
||||||
|
grep -l "# auto_logrotate_licenca_PABX" /hdaux/utilitarios/scripts/logrotate.d/* |xargs sed -i "s/ rotate \+[0-9]\+.*/ rotate $1/g" |
||||||
|
} |
||||||
|
|
||||||
|
|
||||||
|
# apenas se não existir no banco ou no arquivo |
||||||
|
function get_default_days(){ |
||||||
|
# 1048576M = 1G |
||||||
|
|
||||||
|
size_hd=$(df -B 1048576K / |awk 'NR==2 {print $2}') |
||||||
|
|
||||||
|
[[ -z size_hd ]] && exit |
||||||
|
|
||||||
|
if [[ 255 > $size_hd ]]; then |
||||||
|
echo 90 # dias |
||||||
|
|
||||||
|
elif [[ 505 > $size_hd ]];then |
||||||
|
echo 186 # dias |
||||||
|
|
||||||
|
elif [[ 755 > $size_hd ]];then |
||||||
|
echo 365 # dias |
||||||
|
|
||||||
|
else |
||||||
|
echo 730 #dias |
||||||
|
fi |
||||||
|
} |
||||||
|
|
||||||
|
|
||||||
|
function get_data_txt (){ |
||||||
|
|
||||||
|
if [[ -f "$caminho_dados_txt" ]];then |
||||||
|
days=$( cat "$caminho_dados_txt" | awk -F = '/dias=[0-9]+$/ {print $2}' ) |
||||||
|
|
||||||
|
if [[ -z $days ]];then |
||||||
|
days="$( get_default_days )" |
||||||
|
fi |
||||||
|
|
||||||
|
else |
||||||
|
days="$( get_default_days )" |
||||||
|
set_data_txt "$days" |
||||||
|
fi |
||||||
|
|
||||||
|
echo "$days" |
||||||
|
} |
||||||
|
|
||||||
|
|
||||||
|
function set_data_txt(){ |
||||||
|
|
||||||
|
[[ ! -f "$caminho_dados_txt" ]] && >"$caminho_dados_txt" |
||||||
|
|
||||||
|
[[ -z $(grep -E "^dias=" "$caminho_dados_txt") ]] && |
||||||
|
echo "dias=$1" >> "$caminho_dados_txt" || |
||||||
|
sed -i "s/^dias=.*/dias=$1/g" "$caminho_dados_txt" |
||||||
|
} |
||||||
|
|
||||||
|
function get_data_days(){ |
||||||
|
return_query=$(PGPASSWORD=$PASSWORD_DB \ |
||||||
|
psql -h "192.168.1.125" -U $USER_DB -d $BASE_DB -c "$query_keep_data_days") |
||||||
|
|
||||||
|
errno=$? |
||||||
|
|
||||||
|
days=$( echo "$return_query" | awk 'NR==3 {print $0}'|xargs ) |
||||||
|
|
||||||
|
if [[ ! $days ]] ;then |
||||||
|
# não foi difinido dias no banco de dados |
||||||
|
days=$(get_data_txt) |
||||||
|
|
||||||
|
# retorno days vazio por erros ou days vazio por não definido |
||||||
|
[[ $errno == 0 ]] && insert_prm_log_dias_bd "$days" |
||||||
|
|
||||||
|
else |
||||||
|
set_data_txt "$days" |
||||||
|
fi |
||||||
|
|
||||||
|
echo "$days" |
||||||
|
} |
||||||
|
|
||||||
|
|
||||||
|
function remove_row_bd(){ |
||||||
|
|
||||||
|
date=$( date -d -"$1 days" +"%Y-%m-%d" ) |
||||||
|
|
||||||
|
for i in `seq 0 $(("${#pbx[@]}" - 1))`; do |
||||||
|
|
||||||
|
PGPASSWORD=$PASSWORD_DB \ |
||||||
|
psql -h "192.168.1.125" -U $USER_DB -d $BASE_DB -c "$(echo "${pbx[$i]} "\'"$date"\') " |
||||||
|
done |
||||||
|
|
||||||
|
} |
||||||
|
|
||||||
|
|
||||||
|
days="$(get_data_days)" |
||||||
|
[[ ! "$days" ]] && kill -9 $$ |
||||||
|
set_logrotate "$days" |
||||||
|
|
||||||
|
remove_audio_wav "$days" |
||||||
|
|
||||||
|
remove_row_bd "$days" |
||||||
|
|
Loading…
Reference in new issue