forked from bruno/pabx-app
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.
289 lines
7.1 KiB
289 lines
7.1 KiB
2 years ago
|
#!/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/ftp_simplesip.sh
|
||
|
|
||
|
#PARAMETROS/CONFIGURACAO
|
||
|
CLIENTE=$([ -e /hdaux/cliente ] && cat /hdaux/cliente)
|
||
|
SERVIDOR="bkp.simplesip.com.br"
|
||
|
USUARIO="simples1"
|
||
|
SENHA="SimpleS_root"
|
||
|
|
||
|
DIR_DESTINO_AUDIOS="$CLIENTE/audios"
|
||
|
DIR_DESTINO_CONFIGS="$CLIENTE/configs"
|
||
|
|
||
|
ATIVA_AUDIOS="0" # 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/ftp_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/ftp_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/ftp_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/ftp_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/ftp_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/ftp_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/ftp_simplesip.pid
|
||
|
|