Pessoal fiz um script (melhor dois) que uma parte fica nos servidores de dados e outra no servidor de backup, ele funciona muito bem no FreeBSD até o 5.4, mas no 6.0 tá dando pau. Vejam só as falhas são apresentadas no FTP, o incrível é que o e-mail de aviso as variáveis são interpretadas corretamente e no FTP as varáveis aparentemente não o são, vale salientar que este erro só aparece no FTP da versão 6.0 do FreeBSD e não nas demais anteriores.
Se tiver alguém que possa me ajudar, pois os servidores estão sendo atualizados e não estou conseguindo encontrar o entrave para o funcionamento do FTP. Desde já agradeço. Este script também funciona no GNU/Linux sem problemas. Vejam o script que fica no lado dos servidores de dados: ================================================= #!/bin/sh ################################################################################## # Criado por: # Marcelo G. Dias ( [EMAIL PROTECTED] ) # http://www.boletim.net ################################################################################## TESTMES=`date "+%d"` DATA=`date +%Y%m%d` MAQUINA="server01" REMOVE=`date -v -1d +%Y%m%d` cd /var/backup/ for I in `grep -v "^#" /usr/local/backup/dirs | sed '/^$/d'` do DIR=`echo "$I" | tr "/" "_"` tar -zcf "backup-${MAQUINA}-${DIR}-${DATA}.tar.gz" "/${I}" 2>/dev/null TESTE="$?" sum "backup-${MAQUINA}-${DIR}-${DATA}.tar.gz" >> "backup-${MAQUINA}-${DATA}.txt" rm -f "backup-${MAQUINA}-${DIR}-${REMOVE}.tar.gz" 2>/dev/null done rm -f "backup-${MAQUINA}-${REMOVE}.txt" 2>/dev/null chown backup:wheel * cd - ======================================================== Local do script : /usr/local/backup/ Nome do script de backup : backup.sh Nome do script de configuracao : dirs ======================================================== Arquivo de configuracao ############################################################ # Ao informar um diretorio para lista de backup nao coloque # devise informar o endereco completo, somente um por linha # mas ATENSAO : nao coloque a "/" do raiz a "/" final veja # exemplo ERRADO e CERTO abaixo: # # ERRADO: /var/home/ # # CERTO: var/home ############################################################ etc sbin usr/home usr/local usr/sbin usr/lib usr/libexec usr/src/sys/i386/conf var/mail var/data var/run ================================================= Vejam o script que fica no servidor de backup o qual está apresentando a falha: ================================================= #! /bin/sh # Variaveis de login do FTP USUARIO_FTP="user" SENHA_FTP="senha-user" TESTMES=`date "+%d"` MENSAGEM="**** MENSAGENS DO BACKUP SERVIDORES DE DOMÍNIOS ****" # Maquinas por domínios MAQUINAS='server01 server02 server03 server04 server05' # Maquinas por IP MAQUINAS_IP='200.xxx.xxx.xxx 200.xxx.xxx.xxx' # Vai para o diretorio de backup cd /var/backup # Verifica data DATA=`date "+%Y%m%d"` RDATA=`date -v 2d "+%Y%m%d"` # Loop que permite login nos servidores de domínios for SERVIDOR in ${MAQUINAS} do # Busca do arquivo de configuracao do FTP do backup ftp -in <<EOF open ${SERVIDOR}.meudominio.com.br user ${USUARIO_FTP} ${SENHA_FTP} bin passive get backup-${SERVIDOR}-${DATA}.txt EOF # Informa qual Servidor MENSAGEM="${MENSAGEM} **************************************** * ${SERVIDOR} **************************************** " # Testa se FTP esta OK ! if [ ! -s "backup-${SERVIDOR}-${DATA}.txt" ] then # Envia email informando erro no acesso do FTP MENSAGEM="${MENSAGEM} ATENÇÃO : FTP do Servidor ${SERVIDOR} Falhou ... " # Pula para o proximo loop continue else # Se FTP OK remove lista do backup anterior rm -f backup-${SERVIDOR}-${RDATA}.txt 2>/dev/null fi # Gera variavel BUSCA para o FTP BUSCA=`awk '{printf "\n%3s %30s", "get", $3}' backup-${SERVIDOR}-${DATA}.txt` ftp -in <<EOF open ${SERVIDOR}.meudominio.com.br user ${USUARIO_FTP} ${SENHA_FTP} bin passive ${BUSCA} EOF # Loop de verificacao do arquivo for LISTA in `cat backup-${SERVIDOR}-${DATA}.txt | tr " " ":"` do TESTESUM=`echo "${LISTA}" | awk -F":" '{print $1 $2}'` ARQUIVO=`echo "${LISTA}" | awk -F":" '{print $3}'` TESTELOC=`sum "${ARQUIVO}" | awk '{print $1 $2}'` if [ "${TESTESUM}" -eq "${TESTELOC}" 2>/dev/null ] then # Se arquivo nao estiver corrompido envia e-mail dando OK! MENSAGEM="${MENSAGEM} OK! ${ARQUIVO} " # FTP OK remove backup anterior do ARQUIVO REMOVE=`echo "${ARQUIVO}" | sed "s/${DATA}/${RDATA}/"` rm -f "${REMOVE}" 2>/dev/null else # Se arquivo estiver corrompido envia e-mail de ALERTA! MENSAGEM="${MENSAGEM} ER! ${ARQUIVO} " fi done done # Envia um e-mail para o NOP esclarecendo os procedimentos do backup e as falhas # Ocorridas para averiguação. mail -s "Mensagens do Backup" [EMAIL PROTECTED] -r [EMAIL PROTECTED] <<FIM ${MENSAGEM} **************************************** Atenciosamente, Sistema de Backup FIM # Temporiza 32400 segundos (09:00hs) para executar FTP para servidores de IP sleep 32400 MENSAGEM="**** MENSAGENS DO BACKUP SERVIDORES DE IP ****" # Loop que permite login nos servidores de IP for SERVIDOR in ${MAQUINAS_IP} do # Busca do arquivo de configuracao do FTP do backup ftp -in <<EOF open ${SERVIDOR} user ${USUARIO_FTP} ${SENHA_FTP} bin passive get backup-${SERVIDOR}-${DATA}.txt EOF # Identifica Nome do Servidor por IP # Este arquivo deverá conter o IP do servidor mais o nome # Ceparado por ":" conforme exemplo, sendo um por linha: # 200.xxx.xxx.xxx:Servidor IPSado NSERVER=`grep "^${SERVIDOR}" /etc/backup_ip.conf | cut -f2 -d":"` # Informa qual Servidor MENSAGEM="${MENSAGEM} **************************************** * ${NSERVER} **************************************** " # Testa se FTP esta OK ! if [ ! -s "backup-${SERVIDOR}-${DATA}.txt" ] then # Envia email informando erro no acesso do FTP MENSAGEM="${MENSAGEM} ATENÇÃO : FTP do Servidor ${SERVIDOR} Falhou ... " # Pula para o proximo loop continue else # Se FTP OK remove lista do backup anterior rm -f backup-${SERVIDOR}-${RDATA}.txt 2>/dev/null fi # Gera variavel BUSCA para o FTP BUSCA=`awk '{printf "\n%3s %30s", "get", $3}' backup-${SERVIDOR}-${DATA}.txt` ftp -in <<EOF open ${SERVIDOR}.wavenet.com.br user ${USUARIO_FTP} ${SENHA_FTP} bin passive ${BUSCA} EOF # Loop de verificacao do arquivo for LISTA in `cat backup-${SERVIDOR}-${DATA}.txt | tr " " ":"` do TESTESUM=`echo "${LISTA}" | awk -F":" '{print $1 $2}'` ARQUIVO=`echo "${LISTA}" | awk -F":" '{print $3}'` TESTELOC=`sum "${ARQUIVO}" | awk '{print $1 $2}'` if [ "${TESTESUM}" -eq "${TESTELOC}" 2>/dev/null ] then # Se arquivo nao estiver corrompido envia e-mail dando OK! MENSAGEM="${MENSAGEM} OK! ${ARQUIVO} " # FTP OK remove backup anterior do ARQUIVO REMOVE=`echo "${ARQUIVO}" | sed "s/${DATA}/${RDATA}/"` rm -f "${REMOVE}" 2>/dev/null else # Se arquivo estiver corrompido envia e-mail de ALERTA! MENSAGEM="${MENSAGEM} ER! ${ARQUIVO} " fi done done # Envia um e-mail para o NOP exclarecendo os procedimentos do backup e as falhas # Ocorridas para averiguação. mail -s "Mensagens do Backup" [EMAIL PROTECTED] -r [EMAIL PROTECTED] <<FIM ${MENSAGEM} **************************************** Atenciosamente, Sistema de Backup FIM # Passa permissao de uso e dominio para usuario backup chown backup * # Da direito de Leitura e gravacao para dono e # Somente leitura para grupo e outros chmod 644 * # Retorna para diretorio de origem cd - ======================================================== Local do script de backup : /usr/local/sbin/ Nome do script : ftp-backup.sh Local do script de configuracao: /etc/ Nome do script de configurcao : backup_ip.conf ======================================================== Script de configuracao 200.xxx.xxx.xxx:Servidor IPSado 200.xxx.xxx.xxx:outrodominio.com.br ======================================================== --------------------------------------------------------------------- Esta lista não admite a abordagem de outras liguagens de programação, como perl, C etc. Quem insistir em não seguir esta regra será moderado sem prévio aviso. --------------------------------------------------------------------- Sair da lista: [EMAIL PROTECTED] --------------------------------------------------------------------- Esta lista é moderada de acordo com o previsto em http://www.listas-discussao.cjb.net --------------------------------------------------------------------- Links do Yahoo! Grupos <*> Para visitar o site do seu grupo na web, acesse: http://br.groups.yahoo.com/group/shell-script/ <*> Para sair deste grupo, envie um e-mail para: [EMAIL PROTECTED] <*> O uso que você faz do Yahoo! Grupos está sujeito aos: http://br.yahoo.com/info/utos.html