SFTP 명령의 반환 코드를 얻는 방법은 무엇입니까?
디렉토리에서 모든 파일을 다운로드하려면 이렇게 합니다. 그러나 디렉토리가 비어 있으면 명령은 다음을 반환합니다.1
실제 코드는 어떻게 얻을 수 있나요 File not found
?
echo 'get * /var/download' | sftp -b - user@host
또는 해결책은 오류를 무시/억제 File not found
하고 반환하는 것 입니다 0
(모든 오류를 억제하지 않고 이 오류만).
답변1
OpenSSH는 sftp
성공 시 0을, 오류 시 1을 반환합니다.
더 이상의 구별은 제공되지 않습니다.
파일을 다운로드하기 전에 디렉터리에 파일이 있는지 테스트하려면 다음을 사용할 수 있습니다.
echo "ls /remote/path/*" | sftp -b - [email protected]
if [ $? -eq 0 ]
then
echo "Files exist, can download now"
echo 'get /remote/path/* /local/path/' | sftp -b - [email protected]
if [ $? -eq 0 ]
then
echo "Files successfully downloaded"
else
echo "Files exist, but failed to download"
fi
else
echo "Files do not exist"
fi
비슷한 질문은 다음을 참조하세요.로컬 Linux 스크립트에서 원격 SFTP 서버에 파일이 있는지 확인하는 방법은 무엇입니까?