Shell Script que cria log se o arquivo não for enviado para o servidor remoto

Shell Script que cria log se o arquivo não for enviado para o servidor remoto

Eu tenho este pequeno script que basicamente faz o rsync de arquivos entre o servidor remoto. A chave ssh foi gerada para autenticação.

só isso está presente no script

rsync /root/Desktop/cpfies/files/*.xls user@host:root/Desktop/cpfies/moved

basicamente o que eu quero criar é um método de log para esse script que não é chique nem nada... só isso... se a conexão for perdida e o arquivo não for enviado ele vem no meu log dizendo "Arquivo não enviado conexão não estabelecida "

também se os arquivos foram enviados, ele me mostra nos logs enviados com sucesso.

ou se o host ou o usuário estiver errado, ele aparecerá no meu log.

Obrigado e cumprimentos, Sagar Mandal

Responder1

Se quiser registrar apenas tentativas malsucedidas, você pode obter o valor de retorno do rsync examinando $?, que é o valor de retorno do último script. rsyncretorna 0 em caso de sucesso e diferente de zero em erros diferentes (https://lxadm.com/Rsync_exit_codes). Eu faria dessa maneira:

#!/bin/bash

ret_text=$({rsync /root/Desktop/cpfies/files/*.xls user@host:root/Desktop/cpfies/moved} 2>&1)

if [ $? -ne 0 ]; then
    echo rsync error code $? on $(date)
    echo rsync output follows
    echo $ret_text
fi

Você pode colocar isso em a scripte, ao executá-lo, redirecionar sua saída para um arquivo de log como esse script >> log_file, ou pode simplesmente chamar o script e adicionar >> log_fileapós cada comando echo no script.

Se você quiser registrar também tentativas bem-sucedidas, faça isso

rsync /root/Desktop/cpfies/files/*.xls user@host:root/Desktop/cpfies/moved &>> log_file

ou

rsync --log-file=log_file /root/Desktop/cpfies/files/*.xls user@host:root/Desktop/cpfies/moved

Eu também sugeriria aumentar a quantidade de informações que o rsync produz adicionando -vou -vv. Também é possível usar -vvvou até mais, mas o manual diz que é para fins de depuração.

informação relacionada