PABX da Simples IP
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

287 lines
7.1 KiB

#!/bin/bash
#DEPENDENCIAS
#lftp -- yum --disablerepo=\* --enablerepo=base install lftp
#mount.cifs
#LISTAR COMPARTILHAMENTOS
#smbclient -L 192.168.115.6 -U administrador
#CONFIGURACAO CRONTAB
#BKP SIMPLES
#00 05 * * * root bash /hdaux/utilitarios/scripts/bkp_simplesip.sh
#PARAMETROS/CONFIGURACAO
SERVIDOR=""
USUARIO=""
SENHA=""
DIR_DESTINO_AUDIOS="backups_simplesip/audios"
DIR_DESTINO_CONFIGS="backups_simplesip/configs"
ATIVA_AUDIOS="1" # 0 = DESATIVADO / 1 = ATIVADO
ATIVA_CONFIGS="1" # 0 = DESATIVADO / 1 = ATIVADO
#OPCOES DE CONEXAO
#FTP
#MAPEAMENTO DE REDE / COMPARTILHAMENTO DE PASTAS
FTP="1" # 0 = DESATIVADO / 1 = ATIVADO
COMPARTILHAMENTO_REDE="0" # 0 = DESATIVADO / 1 = ATIVADO
#PARA BACKUP ATRAVES DE COMPARTILHAMENTO DE PASTAS (WINDOWS, STORAGE DE REDE)
COMPARTILHAMENTO=""
#VARIAVEIS
EMAIL="meajuda@simplesip.com.br"
FILTRO_AUDIO_DATA="$1" #EX: 2020-02-10 - $(date +\%F --date='yesterday')
DIR_BACKUP_RAIZ="/hdaux"
[ -d /hd2 ] && DIR_BACKUP_RAIZ="/hd2"
CLIENTE=$([ -e /hdaux/cliente ] && cat /hdaux/cliente)
diasemana=$(date +%A)
case $diasemana in
Monday)
diasemana=segunda-feira
;;
Tuesday)
diasemana=terca-feira
;;
Wednesday)
diasemana=quarta-feira
;;
Thursday)
diasemana=quinta-feira
;;
Friday)
diasemana=sexta-feira
;;
Saturday)
diasemana=sabado
;;
Sunday)
diasemana=domingo
;;
esac
#Verifica se o script esta rodando
if [ -e /tmp/bkp_simplesip.pid ] ; then
echo "Script em Excecucao..."
exit
fi
[ -z "$DIR_DESTINO_AUDIOS" ] && echo "Diretorio para armazenamento de audios invalido!" && exit 1
[ -z "$DIR_DESTINO_CONFIGS" ] && echo "Diretorio para armazenamento de configuracoes invalido!" && exit 1
#Gera PID do scritp
echo $$ > /tmp/bkp_simplesip.pid
cd /tmp/
#Armazenando a data e hora em uma variavel
declare -x data=$(date +%F-%H-%M-%S)
#Criando a pasta para armazenar o backup:
mkdir -p $DIR_BACKUP_RAIZ/$data
DIR_BACKUP="$DIR_BACKUP_RAIZ/$data"
backup_config()
{
true
}
backup_audios()
{
clear
#echo "Verificando arquivos de audio (gravacoes)"
ARQUIVOS=$(ls -ltr --time-style=+%F-%T /var/spool/asterisk/monitor/ | grep -v "\-rwxr-x---" | grep -i wav | grep "$FILTRO_AUDIO_DATA" | grep -v "$(date +%F)")
if ! [ -z "$ARQUIVOS" ] ; then
mkdir -p $DIR_BACKUP/$DIR_DESTINO_AUDIOS
CONT=1
TOTAL=$(echo "$ARQUIVOS" | wc -l)
echo "$ARQUIVOS" | while read LINHA; do
#echo "Copiando arquivo $CONT de $TOTAL"
#echo ""
ANO=$(echo "$LINHA" | awk {'print $6'} | cut -f 1 -d "-")
MES=$(echo "$LINHA" | awk {'print $6'} | cut -f 2 -d "-")
DIA=$(echo "$LINHA" | awk {'print $6'} | cut -f 3 -d "-")
AUDIO=$(echo "$LINHA" | awk {'print $7'})
if ! [ -d $DIR_BACKUP/$DIR_DESTINO_AUDIOS/$ANO ] ; then
mkdir -p $DIR_BACKUP/$DIR_DESTINO_AUDIOS/$ANO
fi
if ! [ -d $DIR_BACKUP/$DIR_DESTINO_AUDIOS/$ANO/$MES ] ; then
mkdir -p $DIR_BACKUP/$DIR_DESTINO_AUDIOS/$ANO/$MES
fi
if ! [ -d $DIR_BACKUP/$DIR_DESTINO_AUDIOS/$ANO/$MES/$DIA ] ; then
mkdir -p $DIR_BACKUP/$DIR_DESTINO_AUDIOS/$ANO/$MES/$DIA
fi
/bin/cp -Rapf /var/spool/asterisk/monitor/$AUDIO $DIR_BACKUP/$DIR_DESTINO_AUDIOS/$ANO/$MES/$DIA/
RESULT_CP=$?
if [ "$RESULT_CP" != "0" ] ; then
echo -e "Subject: FALHA AO SEPARAR OS ARQUIVOS DE AUDIO: $SERVIDOR - CLIENTE:$CLIENTE" | msmtp -t $EMAIL
cd /tmp/
#/bin/rm -rf $DIR_BACKUP
#/bin/rm -rf /tmp/bkp_simplesip.pid
return 1
fi
CONT=$(($CONT + 1))
done
return 0
else
return 1
fi
}
ftp()
{
if [ "$ATIVA_AUDIOS" == "1" ] ; then
backup_audios
if [ "$?" == "0" ] ; then
cd $DIR_BACKUP/$DIR_DESTINO_AUDIOS/
SUBPASTAS=$(ls -1d */*/*)
for PASTA_DIA in $SUBPASTAS ; do
lftp -u $USUARIO,$SENHA $SERVIDOR << EOF
mput -O $DIR_DESTINO_AUDIOS -cd $PASTA_DIA/*
bye
EOF
RESULT_FTP=$?
if [ "$RESULT_FTP" != "0" ] ; then
echo -e "Subject: FALHA AO COPIAR BACKUP DOS AUDIOS VIA FTP: $SERVIDOR - CLIENTE:$CLIENTE" | msmtp -t $EMAIL
cd /tmp/
/bin/rm -rf $DIR_BACKUP
/bin/rm -rf /tmp/bkp_simplesip.pid
exit 1
else
ls -1 $PASTA_DIA | while read AUDIO_PERMISSAO ; do
chmod 0750 /var/spool/asterisk/monitor/$AUDIO_PERMISSAO
#echo "AJUSTANDO PERMISSAO $AUDIO_PERMISSAO"
done
fi
done
fi
fi
if [ "$ATIVA_CONFIGS" == "1" ] ; then
cd $DIR_BACKUP_RAIZ/
lftp -u $USUARIO,$SENHA $SERVIDOR << EOF
rm -rf $DIR_DESTINO_CONFIGS/backup/$diasemana.tar.gz
mput -O $DIR_DESTINO_CONFIGS -cd backup/*.tar.gz
bye
EOF
RESULT_FTP_CONFIGS=$?
if [ "$RESULT_FTP_CONFIGS" != "0" ] ; then
echo -e "Subject: FALHA AO COPIAR BACKUP DE CONFIGURACAO VIA FTP: $SERVIDOR - CLIENTE:$CLIENTE" | msmtp -t $EMAIL
cd /tmp/
/bin/rm -rf $DIR_BACKUP
/bin/rm -rf /tmp/bkp_simplesip.pid
exit 1
fi
fi
cd /tmp/
/bin/rm -rf $DIR_BACKUP
}
compartilhamento_rede()
{
if ! [ -d /mnt/$data ] ; then
mkdir -p /mnt/$data
fi
mount.cifs //$SERVIDOR/$COMPARTILHAMENTO /mnt/$data -o user=$USUARIO,password=$SENHA,file_mode=0777,dir_mode=0777,vers=2.0
RESULT_MOUNT=$?
if [ "$RESULT_MOUNT" != "0" ] ; then
echo -e "Subject: FALHA AO MONTAR COMPARTILHAMENTO: $SERVIDOR - CLIENTE:$CLIENTE" | msmtp -t $EMAIL
cd /tmp/
/bin/rm -rf $DIR_BACKUP
/bin/rm -rf /mnt/$data
/bin/rm -rf /tmp/bkp_simplesip.pid
exit 1
else
DIR_BACKUP="/mnt/$data"
fi
if [ "$ATIVA_AUDIOS" == "1" ] ; then
backup_audios
if [ "$?" == "0" ] ; then
cd $DIR_BACKUP/$DIR_DESTINO_AUDIOS/
SUBPASTAS=$(ls -1d */*/*)
for PASTA_DIA in $SUBPASTAS ; do
ls -1 $PASTA_DIA | while read AUDIO_PERMISSAO ; do
chmod 0750 /var/spool/asterisk/monitor/$AUDIO_PERMISSAO
done
done
fi
fi
if [ "$ATIVA_CONFIGS" == "1" ] ; then
if ! [ -d $DIR_BACKUP/$DIR_DESTINO_CONFIGS ] ; then
mkdir -p $DIR_BACKUP/$DIR_DESTINO_CONFIGS
fi
cd /tmp/
rsync -zap $DIR_BACKUP_RAIZ/backup/*.tar.gz $DIR_BACKUP/$DIR_DESTINO_CONFIGS/
RESULT_RSYNC=$?
if [ "$RESULT_RSYNC" != "0" ] ; then
echo -e "Subject: FALHA AO COPIAR BACKUP DE CONFIGURACAO: $SERVIDOR - CLIENTE:$CLIENTE" | msmtp -t $EMAIL
cd /tmp/
/bin/rm -rf $DIR_BACKUP
/bin/rm -rf /mnt/$data
/bin/rm -rf /tmp/bkp_simplesip.pid
exit 1
fi
fi
cd /tmp/
umount /mnt/$data
/bin/rm -rf /mnt/$data
}
[ "$FTP" == "1" ] && ftp
[ "$COMPARTILHAMENTO_REDE" == "1" ] && compartilhamento_rede
cd /tmp/
/bin/rm -rf /tmp/bkp_simplesip.pid