Tengo este pequeño script que básicamente sincroniza archivos entre un servidor remoto. Se ha generado la clave ssh para la autenticación.
Sólo esto está presente en el guión.
rsync /root/Desktop/cpfies/files/*.xls user@host:root/Desktop/cpfies/moved
Básicamente, lo que quiero crear es un método de registro para este script, no es sofisticado ni nada... solo esto... si se pierde la conexión y el archivo no se envía, aparece en mi registro que dice "Archivo no enviado, conexión no establecida". "
Además, si los archivos se enviaron, me muestra en los registros enviados correctamente.
o si el anfitrión o el usuario se equivoca, se muestra en mi registro.
Gracias y saludos, Sagar Mandal.
Respuesta1
Si desea registrar solo los intentos fallidos, puede obtener el valor de retorno de rsync consultando $?
, que es el valor de retorno del último script. rsync
devuelve 0 en caso de éxito y distinto de cero en diferentes errores (https://lxadm.com/Rsync_exit_codes). Yo lo haría de esa manera:
#!/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
Puede ponerlo en un script
y cuando lo ejecute, redirigir su salida a un archivo de registro como ese script >> log_file
, o simplemente puede llamar al script y agregarlo >> log_file
después de cada comando de eco en el script.
Si desea registrar también intentos exitosos, entonces puede hacerlo.
rsync /root/Desktop/cpfies/files/*.xls user@host:root/Desktop/cpfies/moved &>> log_file
o
rsync --log-file=log_file /root/Desktop/cpfies/files/*.xls user@host:root/Desktop/cpfies/moved
También sugeriría aumentar la cantidad de información que produce rsync agregando -v
o -vv
. También es posible usar -vvv
o incluso más, pero el manual dice que es para fines de depuración.