파일 목록이 있습니다~ 해야 하다확인 이메일을 보내기 전에 원격 디렉터리에 존재합니다. 예를 들어, 내 목록은 다음과 같습니다 file_list=example.txt testfile.txt
. 나는 각각을 테스트하는 방법을 알고 있다개인의파일은 다음과 같이 존재합니다.
ssh [email protected] "test -e /path/to/file/example.txt"
if [ $? -eq 0 ]; then
echo -e "Email body" | mail -s "File exists." "[email protected]"
fi
하지만 목록에 있는 각 파일을 어떻게 클릭하고 확인할 수 있나요?모든 파일해당 원격 디렉토리에 존재합니까? 4개 중 3개가 성공적으로 푸시되었다고 가정하면 sftp
클라이언트에게 모든 파일을 사용할 수 있다는 이메일을 계속 보내는 대신 종료하고 내 그룹에 오류를 이메일로 보낸 다음 확인하러 가라고 말해야 합니다. 논리는 다음과 같을 수 있습니다.
ssh [email protected] "test - [$file_list]"
if [they all exist]; then
successful -- email the client
else
error -- email your group
exit
fi
답변1
너할 수 있다단일 SSH 연결의 원격 측에 배열을 설정하고 이를 통해 반복해 보십시오. 파일 목록이 정적이고 원격 측에 쉘 스크립트를 넣을 수 있는 경우 이를 호출하는 것이 가장 쉽습니다. 그렇지 않으면 배열을 로컬로 설정하고 반복하면서 SSH를 통해 테스트할 때마다 파일이 있는지 확인할 수 있습니다.
files=(example.txt testfile.txt)
ok=0
for file in "${files[@]}"
do
ssh [email protected] test -e "$file" && ((ok++))
done
if [ $ok -eq ${#files[@]} ]
then
success, all $ok files made it
else
failure, only $ok files made it
fi
답변2
변수를 설정 file
하고 file1
파일 이름을 추가합니다.
file="/path/to/testfile.txt"
file1="/path/to/example.txt"
ssh [email protected]
if [[ -f "$file" && -f "$file1" ]]; then
echo -e "Email body" | mail -s "File exists." "[email protected]"
else
echo -e "Email body" | mail -s "File does not exists." "[email protected]"
exit
fi
-f
: 파일이 존재하고 일반 파일이면 true를 반환합니다.