From d500a6dfccb546bc2d88fc3462e8d3fb46815974 Mon Sep 17 00:00:00 2001 From: bruno Date: Wed, 6 Sep 2023 07:15:13 -0400 Subject: [PATCH] script de temporizador de dados. Controla o tempo para manter os dados --- .../temporizador_de_dados.sh | 179 ++++++++++++++++++ 1 file changed, 179 insertions(+) create mode 100644 asterisk/hdaux_utilitarios_scripts/temporizador_de_dados.sh diff --git a/asterisk/hdaux_utilitarios_scripts/temporizador_de_dados.sh b/asterisk/hdaux_utilitarios_scripts/temporizador_de_dados.sh new file mode 100644 index 0000000..fab25ab --- /dev/null +++ b/asterisk/hdaux_utilitarios_scripts/temporizador_de_dados.sh @@ -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" +