Eu tenho um script BASH que "lê" os logs de backup, relata o sucesso / fracasso do
último backup, lista o conteúdo do diretório de backup e envia os resultados por e-mail. Depois de mover os backups para um novo servidor e transformar a rotina de email em funções, ele me envia um email. Parece que está expandindo a data e enviando um e-mail para cada data em que ela se expande.
Eu não posso ver como para a minha vida. Aqui está um código de "MAIN":
YDATE=$(date -s "yesterday" '+%a%b%d')
BKPLOG="/mnt/nfs/horizon/backuplog_$YDATE.log"
STATUS=$(cat /mnt/nfs/horizon/backuplog_$YDATE.log)
# Catenate logs and status into message body -- email report to
# Support.
func_make_msg $MSG "$RPT" "$STATUS" "$DB_SERV_BACKUP_LISTING"
func_send $MSG "[email protected]" # Send it!
func_make_message apenas cria a mensagem. Note que nenhuma função está em um loop for ou while. Aqui está a função de envio:
function func_send ()
{
local _message=$1
local _cc=$2
local _recipient=$3
$PRINT --columns=2 -t < $_message | $MAIL -s "Backup Logs" "$_cc"
}
Minha caixa de entrada mostra um e-mail de cada data nos registros de backup toda vez que eu o executo. agradecidamente
Eu limpei os antigos, caso contrário, minha caixa de entrada ainda estaria enlouquecendo.
O servidor de backup é o Debian. Script executado em um cron job:
0 7 * * * bash /home/bkpadmin/scripts/backup_mail.sh
alguma ideia? O tempo estava fora de uma milha, mas eu eliminei o fator cron do ntp executando
manualmente. Eu obtenho os mesmos resultados mesmo depois de consertar a hora / data e executá-la manualmente.
Aqui está a função func_make_msg para os curiosos:
function func_make_msg ()
{
local _msg_body=$1
local _file=$2
local _backup_status=$3
local _db_backups=$4
cat > $_msg_body << EOM
## Nightly backup logs ###########################
** Backup Status **
File name: $_file
$_backup_status
---------------
** Important DB Server ****
$_db_backups
---------------
EOM
}
Obrigado ~
Bubnoff
UPDATE Obrigado Dennis. Foi isso. Um erro idiota e estúpido da minha parte. Os resultados de loop-esque resultantes são interessantes. Eu sou o dobro do tolo, como eu realmente li a man page para me lembrar como calcular "ontem". Trocado por 'd'. 'S' como em "string" eu acho. ... Para mais estupidez ... continue a ler ...
Isso não aconteceu durante o teste porque o script pertencia e era executado em uma conta de usuário comum. O comando date -s falhou, mas ainda saiu ontem ... simplesmente não definiu a data do sistema ... falta de permissões e tudo. Aponta para o meu segundo erro ... ainda mais idiota ... a entrada do cron foi para root. Outro exemplo de por que nunca se deve executar scripts como root, nem logar como root, a menos que não haja outra maneira.
O script foi capaz de alterar a data da data do sistema e estragar maciçamente à medida que a variável foi expandida repetidamente, graças a ter poderes enraizados. Estou me entregando às autoridades competentes enquanto falamos. Desculpe, mundo.
Alguém pode ver outros erros estúpidos enquanto estamos falando sobre o assunto?