파일이 원격 서버로 전송되지 않으면 로그를 생성하는 쉘 스크립트

파일이 원격 서버로 전송되지 않으면 로그를 생성하는 쉘 스크립트

기본적으로 원격 서버 간에 파일을 rsync하는 작은 스크립트가 있습니다. 인증을 위해 SSH 키가 생성되었습니다.

스크립트에는 이것만 존재합니다

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

기본적으로 내가 만들고 싶은 것은 이 스크립트에 대한 로그 방법입니다. 화려하지도 않고...이것만... 연결이 끊어지고 파일이 전송되지 않으면 내 로그에 "파일이 전송되지 않음 연결이 설정되지 않았습니다"라는 메시지가 나타납니다. "

또한 파일이 전송된 경우 성공적으로 전송된 로그에 표시됩니다.

또는 호스트나 사용자가 잘못된 경우 내 로그에 표시됩니다.

감사합니다, Sagar Mandal

답변1

실패한 시도만 기록하고 싶다면 $?마지막 스크립트의 반환 값인 를 살펴보면 rsync 반환 값을 얻을 수 있습니다. rsync성공하면 0을 반환하고 다른 오류에서는 0이 아닌 값을 반환합니다(https://lxadm.com/Rsync_exit_codes). 나는 그런 식으로 하고 싶습니다:

#!/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

이를 에 넣고 script실행할 때 출력을 이와 같은 로그 파일로 리디렉션하거나 script >> log_file스크립트를 호출하고 >> log_file스크립트의 각 echo 명령 뒤에 추가할 수 있습니다.

당신보다 성공적인 시도도 기록하고 싶다면

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

또는

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

-v또한 또는 를 추가하여 rsync가 생성하는 정보의 양을 늘리는 것이 좋습니다 -vv. 또는 그 이상을 사용하는 것도 가능 -vvv하지만 설명서에는 디버깅 목적으로 사용된다고 나와 있습니다.

관련 정보