De acordo com as Leis 12.965/2014 e 13.709/2018, que regulam o uso da Internet e o tratamento de dados pessoais no Brasil, ao me inscrever na newsletter do portal DICAS-L, autorizo o envio de notificações por e-mail ou outros meios e declaro estar ciente e concordar com seus Termos de Uso e Política de Privacidade.
Colaboração: Anderson Angelote
Data de Publicação: 23 de fevereiro de 2013
Neste post, irei colocar 2 scripts que irao gerar uma pagina HTML que facilita o acompanhamento dos backups fetos pelo sistema BackupPc.
O primeiro passo é criar o diretório onde os scripts irão ficar:
mkdir -p /srv/scripts/
Agora crie o arquivo variaveis.sh que irá conter as informações necessárias pelo script.
vim /srv/scripts/variaveis.sh
#!/bin/sh # ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------- # variaveis # # Site : http://blog.angelote.com.br # Autor : Anderson Angelote < anderson@angelote.com.br> # # ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------- # Variaveis utilizadas pelo script de acompanhamento dos backup's # executados pelo Backuppc # ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------- #clear INICIO=$(date) # DEFINIÇÃO DAS CORES USADAS NO SCRIPT GREY="\033[01;30m" RED="\033[01;31m" GREEN="\033[01;32m" YELLOW="\033[01;33m" BLUE="\033[01;34m" PURPLE="\033[01;35m" CYAN="\033[01;36m" WHITE="\033[01;37m" CLOSE="\033[m" # VALIDANDO O USUARIO QUE ESTA EXECUTANDO O SCRIPT USU=$(whoami) # COMANDOS UTILIZADOS NO SCRIPT GREP=$(which grep) MKDIR=$(which mkdir) IF=$(which ifconfig) CAT=$(which cat) SED=$(which sed) CUT=$(which cut) LS=$(which ls) WC=$(which wc) TOUCH=$(which touch) DATE=$(which date) CAT=$(which cat) PING=$(which ping) CP=$(which cp) RM=$(which rm) MV=$(which mv) SORT=$(which sort) #-----------------+ #DADOS DO SERVIDOR| #-----------------+ SERV_IP=$(${IF} eth0 | grep 'inet end' | awk '{print $3}') #-----------------+ #DADOS do BACKUPPC| #-----------------+ BACKUPPC_CONF=$(${CAT} /etc/init.d/backuppc | ${GREP} CONF | ${GREP} pl | ${CUT} -d"=" -f2) BACKUPPC_DIRBKP=$(${CAT} ${BACKUPPC_CONF} | ${GREP} TopDir | ${GREP} -v ^# | ${SED} "s/ /;/g" | ${SED} "s/'//g"| ${CUT} -d";" -f3) BACKUPPC_SERVIDORES="$(${LS} -1 ${BACKUPPC_DIRBKP}/pc/ | ${GREP} -v procore)" #-----------------+ #DADOS DA PAGINA | #-----------------+ WWW_DIAS=30 # Dias que deverão aparecer no relatório WWW_DIR="/var/www/controle" WWW_ARQSAI="${WWW_DIR}/corpo.php" HREF="href=http://${SERV_IP}/backuppc/index.cgi?host=" WWW_NUMSERV=$(ls -1 ${BACKUPPC_DIRBKP}/pc | ${WC} -l ) #----------------+ #DADOS DO SCRIPT | #----------------+ SCRIPT_SERVIDOR="/tmp/lista_servidor.txt" SCRIPT_BACKUP="/tmp/lista_backup.txt"
As informações que serão necessárias alterações são:
Na linha 63, é colocado o numero de dias que deve aparecer no relatório:
WWW_DIAS=30
Na linha 51, é a interface que deve ser usada para acessar o servidor do BackupPc, eu estou usando a eth0
SERV_IP=$(${IF} eth0 | grep 'inet end' | awk '{print $3}')
O segundo script é o que vai gerar o relatório:
vim /srv/scripts/controle.sh
#!/bin/sh # ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------- # Controle # # Site : http://blog.angelote.com.br # Autor : Anderson Angelote < anderson@angelote.com.br> # # ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------- # Gerar o relatório de acompanhamento dos backup's executados pelo Backuppc # ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------- # Histórico: # # Versão 1: # Data: 08/01/2013 # Descrição: Faz a leiruta dos arquivos de configuração do backuppc e gera # a página com o tipo de backup. # # ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ -------- clear . /srv/scrips/variaveis.sh # VALIDANDO O USUARIO QUE ESTA EXECUTANDO O SCRIPT if [ "${USU}" != root ]; then echo echo "${RED}#----------------------------------------------------------------------------------" echo " ESTE PROGRAMA PRECISA SER EXECUTADO COM PERMISSOES DE SUPERUSUARIO!" echo " Abortando..." echo "#-----------------------------------------------------------------------------------${CLOSE}" echo exit 1 fi # VALIDANDO EXECUÇÃO CONCORRENTE export PROCESSO=$(ps ax |${GREP} mensal.sh |${GREP} -v grep | ${GREP} -v vim | wc -l) if [ ${PROCESSO} -gt 3 ]; then echo "Geracao do relatorio adiada pois ja existe um processo em execao ${PROCESSO}." exit 0 fi # DECLARAÇÃO DA FUNÇÃO DE EXECUÇÃO DO SCRIPT _INSTALL() { echo "${RED}#-------------------------------------------------------------------${CLOSE}" echo "${RED} Este script estara trabalhando com o seguinte processo ${GREEN} $$ ${CLOSE} ${CLOSE}" echo "${RED}#-------------------------------------------------------------------${CLOSE}" #sleep 3 } _DIRETORIOS() { echo ${GREEN} "Iniciando a verificação dos diretorios usados" ${CLOSE} if [ ! -d ${WWW_DIR} ];then echo ${BLUE} "Criando diretorio da pagina de controle "${CLOSE} ${MKDIR} -p ${WWW_DIR} 2> /dev/null fi if [ ! -f ${WWW_DIR}/index.php ];then echo ${BLUE} "Criando arquivo index "${CLOSE} ${CAT} << EOF > ${WWW_DIR}/index.php 2> /dev/null < html> < head> < title> Backups BackupPc </title> < meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> </head> < body bgcolor="#FFFFFF" text="#000000"> <? include("corpo.php"); ?> </body> </html> < meta HTTP-EQUIV="refresh" CONTENT="5"> EOF fi } _CABECA() { ${CAT} << EOF > ${WWW_ARQSAI} < html> < head> < title> Relatório de acompanhamento dos backups </title> < meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> </head> < p>< h1 align=center>Acompanhamento dos Backups da ScITech</h1></p> < body bgcolor="#FFFFFF" text="#000000"> < tr bgcolor="CCCCCC">< td>< HR></td></tr> < table align=center border="1"> < tr> < td bgcolor="#bebebe"align="center">Servidor (${WWW_NUMSERV})</td> < td bgcolor="#bebebe"align="center">IP</td> EOF CONT=0 while [ $CONT -le $WWW_DIAS ] do DIA=`${DATE} --date "${CONT} days ago" +%d/%m` case `${DATE} --date "${CONT} days ago" +%w` in 0) COR="#0BBBB0" ; DIAS="Dom" ;; 1) COR="#cfcfcf" ; DIAS="Seg" ;; 2) COR="#bebebe" ; DIAS="Ter" ;; 3) COR="#cfcfcf" ; DIAS="Qua" ;; 4) COR="#bebebe" ; DIAS="Qui" ;; 5) COR="#cfcfcf" ; DIAS="Sex" ;; 6) COR="#bebebe" ; DIAS="Sab" ;; esac echo " < td bgcolor=${COR} align=center>${DIAS} < br> ${DIA}</td>" >> ${WWW_ARQSAI} CONT=`expr $CONT + 1` done echo " </tr>" >> ${WWW_ARQSAI} } # Gerando Rodapé da Página _RODAPE(){ ${CAT} << EOF >> ${WWW_ARQSAI} < table width=100% align=center border=0 cellspacing=0> < tr>< td> </td></tr> < tr bgcolor="CCCCCC">< td>< HR></td></tr> < tr>< td>< div align="center">< font size="2" face="Geneva, Arial, Kelvetica, san-serif" color="#000000"> Uso exclusivo para usuários do BackupPc </font></div></td></tr> < tr>< td> < div align="center">< a href="http://wiki.angelote.com.br">< font size="1" face="Geneva, Arial, Kelvetica, san-serif" color="#000000"> Desenvolvido por: Anderson Angelote (2013) </font></div></td></tr> </table> </body> </html> EOF } _LEVANTAMENTO() { echo ${GREEN} "Iniciando a verificação dos log de backup" ${CLOSE} echo " " > ${SCRIPT_SERVIDOR} echo " " > ${SCRIPT_BACKUP} for SERVIDOR in ${BACKUPPC_SERVIDORES} do echo ${GREEN} "Iniciando a verificação dos log do servidor ${CYAN} ${SERVIDOR}" ${CLOSE} IP=$(${PING} ${SERVIDOR} -c 1 | grep data | awk '{print $3}' | ${SED} "s/(//g" | ${SED} "s/)//g" 2>/dev/null) echo "${SERVIDOR};${IP} " >> ${SCRIPT_SERVIDOR} # Leitura dos arquivos de logs CONT=0 if [ -e ${BACKUPPC_DIRBKP}/pc/${SERVIDOR}/backups ] then for LEITURA in $(cat ${BACKUPPC_DIRBKP}/pc/${SERVIDOR}/backups) do CONT=$((${CONT} + 1)) case ${CONT} in 1) NUMERO_BACKUP=${LEITURA} ;; 2) TIPO_BACKUP=${LEITURA} ;; 3) INICIO_BACKUP=$(date -u -d @${LEITURA} +%d-%m-%Y) ;; 4) FIM_BACKUP=$(date -u -d @${LEITURA} +%d-%m-%Y) ;; 5) NUM_ARQUIVOS_TOTAL=${LEITURA} ;; 6) TAMANHO_TOTAL=$((${LEITURA} / 1024 /1024)) ;; 22) echo "${SERVIDOR};${NUMERO_BACKUP};${TIPO_BACKUP};${INICIO_BACKUP};${NUM_ARQUIVOS_TOTAL};${TAMANHO_TOTAL}" >> ${SCRIPT_BACKUP} CONT=0 ;; esac done else echo "${SERVIDOR};;;;;" >> ${SCRIPT_BACKUP} fi done ${SORT} -r ${SCRIPT_BACKUP} > ${SCRIPT_BACKUP}.tmp ${MV} ${SCRIPT_BACKUP}.tmp ${SCRIPT_BACKUP} } _CORPO() { echo ${GREEN} "Iniciando a geração da página com as informações" ${CLOSE} DIA=$(date +%d) CONTA=1 D="Sab" for SERVIDOR in ${BACKUPPC_SERVIDORES} do echo ${GREEN} "Adicionando informações do servidor ${CYAN} ${SERVIDOR}" ${CLOSE} echo "< tr>" >> ${WWW_ARQSAI} IP=$(grep -i "${SERVIDOR}" "${SCRIPT_SERVIDOR}" | cut -d';' -f2 ) IP1=$(echo $IP | cut -d' ' -f1 ) CONT=0 if [ ${CONTA} -eq 0 ]; then COR="#bebebe"; CONTA=1 else COR="#cfcfcf";CONTA=0 fi echo "< td bgcolor=${COR} align=center>${SERVIDOR}</td>" >> ${WWW_ARQSAI} echo "< td bgcolor=${COR} align=center>${IP1} </td>" >> ${WWW_ARQSAI} while [ $CONT -le $WWW_DIAS ] do DIA=`$DATE --date "${CONT} days ago" +%d-%m-%Y` DADOS=$(grep -i "${SERVIDOR}" "${SCRIPT_BACKUP}" | grep ${DIA} ) if [ $? -eq 0 ]; then TIPO=$(echo $DADOS | cut -d';' -f3) ARQUIVOS=$(echo $DADOS | cut -d';' -f5) TAMANHO=$(echo $DADOS | cut -d';' -f6) case ${TIPO} in full) COR="#00bBff"; TIPO="COMP";; incr) COR="#00FF00"; TIPO="INCR";; partial) COR="#FFFF00"; TIPO="PARC";; *) COR="#FF0b00"; TIPO="ERRO";; esac else COR="#FF0b00"; TIPO="ERRO" fi echo "< td bgcolor=${COR} align=center font size=1>< a ${HREF}${SERVIDOR} target=new>${TIPO}</a></td>" >> ${WWW_ARQSAI} CONT=`expr $CONT + 1` done echo "</tr>" >> ${WWW_ARQSAI} done } echo ${GREEN} "Iniciando a geração da página de controle" ${CLOSE} _INSTALL _DIRETORIOS _LEVANTAMENTO _CABECA _CORPO _RODAPE exit 0
Depois de criado os scripts é necessário ajustar a permissão para que os mesmo sejam executados:
chmod +x /srv/scripts/variaveis.sh /srv/scripts/controle.sh
O proximo passo é colocar no crontab para a execução automática do script para manter a página atualizada:
crontab -e
0/5 * * * * /srv/scripts/controle.sh >> /var/log/backup.log
Dicas: Para o seu servidor do BackupPc funcionar pelo nome da máquina coloque no arquivo hosts o IP e o nome dos servidores, caso você não tenha um servidor DNS na sua rede.
This policy contains information about your privacy. By posting, you are declaring that you understand this policy:
This policy is subject to change at any time and without notice.
These terms and conditions contain rules about posting comments. By submitting a comment, you are declaring that you agree with these rules:
Failure to comply with these rules may result in being banned from submitting further comments.
These terms and conditions are subject to change at any time and without notice.
Comentários