BackUP FTP das Chamadas de um PABX IP – Backup FTP Asterisk

Nesse post disponibilizarei um Shell Script de minha autoria cuja função inicial é realizar backup de chamadas em um PABX IP, convertendo todos os arquivos Wave para MP3, fazendo UPLoad para um servidor FTP, realizando checagem de Hash Md5 (se o arquivo não foi corrompido) e  enviando um e-mail.

Mas Wave? Sim, é interessante que o Asterisk grave as chamadas realizadas pelo PABX IP em Wave, por ser um formato de áudio sem compressão. Porém justamente pelo fato de não haver compressão, o arquivo Wave é muito maior que um mesmo arquivo em Mp3.

Primeiramente devemos ter um arquivo de confs, chamado de bkpWav2mp3.conf com o seguinte conteúdo:

usuarioFtp      =       usuarioftp
senhaFtp        =       53NH@
servidorFtp     =       ftp.seudominio.com.br
dirGravacoes    =       /var/spool/asterisk/monitor
backupDir       =       /var/tmp/
emailFrom       =       seu@email.com
emailTo =       cliente@email.com
emailAssunto    =       “Backup FTP”
emailSmtp       =       smtp.seudominio.com.br
emailUser       =       usuariosmtp@seudominio.com.br
emailSenha      =       53NH@
arquivoBackup   =       bkp`date +%d%m%Y`.tar.gz
listaGravacoesWav       =       /tmp/listaGravacoesWav.lst
listaGravacoesMp3       =       /tmp/listaGravacoesMp3.lst
data    =       `date +%d/%m/%Y” – “%X`

Segue abaixo o Shell Script:

bkpWav2mp3.sh

#!/bin/bash
tamanhoDirChamadas=$(du $dirGravacoes|awk '{print $1}')

if [ "$tamanhoDirChamadas" -gt "15000000" ]
then
        runBackup
else

        exit 0
fi

runBackup(){
#================== Declarando variaveis ==================#
confs='bkpWav2mp3.conf'
confsTmp='/tmp/variaveis.tmp'

#================== Zerando arquivo Temp ==================#
cat /dev/null > $confsTmp

#========= Importando variaveis do Arquivo .conf ==========#
importarConfs(){
for line in $(awk -F'\t=\t' '{print $1}' $confs)

do
        variavel=$line
        valor=$(grep ^$line $confs|awk -F'\t=\t' '{print $2}')

        echo $variavel=$valor >> $confsTmp
done
}

importarConfs
chmod +x $confsTmp

. $confsTmp
rm -f $confsTmp

#============ Gerando a lista de Arquivos WAV =============#
find $dirGravacoes -type f -name *.wav > $listaGravacoesWav

quantidadeChamadas=$(wc -l $listaGravacoesWav|awk '{print $1}')
#================= Convertendo WAV p/ MP3 =================#
for audio in $(cat $listaGravacoesWav)

do
lame $audio $backupDir/$(echo $audio | awk -F/ '{print $7}' | sed 's/.wav//g').mp3

done

#========= Gerando a lista de Arquivos MP3 ================#
find $backupDir -type f -name *.mp3 > $listaGravacoesMp3

#================== Realizando o BackUP ===================#
tar -cvzf $backupDir/$arquivoBackup -T $listaGravacoesMp3

arquivoBackupFullName=$backupDir/$arquivoBackup

#========== Obtendo hash md5 do arquivo de backup =========#
hashMd5Original=$(md5sum $arquivoBackupFullName | awk '{print $1}')

echo $md5hash

#============ Realizando UPLoad via FTP ===================#
ftp -n $servidorFtp <<EOF
user $usuarioFtp $senhaFtp

lcd /var/tmp
put $arquivoBackup
quit
EOF

tamanhoArquivo=$(du -hs $arquivoBackupFullName|awk '{print $1}')

#=========== Realizando Download via FTP ==================#
if [ ! -d /var/tmp/download/ ]
then
        mkdir /var/tmp/download/

fi

wget -O /var/tmp/download/$arquivoBackup --ftp-user=$usuarioFtp --ftp-password=$senhaFtp ftp://$servidorFtp/$arquivoBackup

#=========== Checando integridade do BackUP ===============#
hashMd5Baixado=$(md5sum /var/tmp/download/$arquivoBackup | awk '{print $1}')

if [ "$hashMd5Original" = "$hashMd5Baixado" ]

then
        # Envio de email informando do sucesso no backup e no Upload
        sendEmail -f "$emailFrom" -t "$emailTo" -u "$emailAssunto" -s "$emailSmtp" -xu "$emailUser" -xp "$emailSenha" -m "

Prezado cliente,

        Foi realizado um backup de suas chamadas, mais informacoes seguem abaixo:

------------------------------------------------------------------------------------
Relatorio de BackUP - IPix Devel Solucoes em TI
------------------------------------------------------------------------------------
 - Data: $data

 - Arquivo: $arquivoBackup
 - Tamanho do Arquivo: $tamanhoArquivo
 - Quantidade de chamadas: $quantidadeChamadas
 - FTP para: $servidorFtp
 - Hash MD5 do arquivo Original: $hashMd5Original

 - Hash MD5 do arquivo no serv. FTP: $hashMd5Baixado
------------------------------------------------------------------------------------

Atenciosamente,
--
Nome da sua Empresa
<email@dominio.com>
55.14.3333.2222

"

        # Apagando os arquivos tar.gz de backup
        rm -f /var/tmp/download/$arquivoBackup
        rm -f /var/tmp/$arquivoBackup

        # Apagando os arquivos de audio original (WAV) 
        for apagarWav in $(cat $listaGravacoesWav)
        do

                rm -f $apagarWav
        done

        # Apagando os arquivos de audio convertidos (MP3)
        for apagarMp3 in $(cat $listaGravacoesMp3)

        do
                rm -f $apagarMp3
        done
else
        # Envio de email acusando problema no backup FTP
        sendEmail -f "$emailFrom" -t "$emailTo" -u "$emailAssunto" -s "$emailSmtp" -xu "$emailUser" -xp "$emailSenha" -m "

Prezado cliente,

        Um problema ocorreu ao realizar o backup, mais informacoes seguem abaixo:

------------------------------------------------------------------------------------
Relatorio de BackUP - IPix Devel Solucoes em TI
------------------------------------------------------------------------------------
 - Data: $data

 - Arquivo: $arquivoBackup
 - Tamanho do Arquivo: $tamanhoArquivo
 - Quantidade de chamadas: $quantidadeChamadas
 - FTP para: $servidorFtp
 - Hash MD5 do arquivo Original: $hashMd5Original

 - Hash MD5 do arquivo no serv. FTP: $hashMd5Baixado
------------------------------------------------------------------------------------

Atenciosamente,
--
Nome da sua Empresa
<email@dominio.com>
55.14.3333.2222

fi"
}

Importante! O Lame é uma dependência desse Script.

Baixe-o em lame.sourceforge.net

Importante! O sendEmail é uma dependência desse Script.

http://en.wikipedia.org/wiki/SendEmail

Anúncios

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s