세부 사항:

세부 사항:

40일이 지난 파일을 원격에서 로컬 호스트로 전송하고 싶습니다. 원격 서버에 연결할 수 있지만 원격 서버에서 로컬 서버로 파일을 전송할 수 없습니다. 해당 파일이나 디렉터리가 없지만 파일이 원격 호스트에 존재한다는 오류가 발생합니다.

세부 사항:

file=`sshpass -p "password" ssh username@server_ip "find /arch -type f -ctime -40"`
sshpass -p "password" scp -r  username@server_ip:$file /arch
echo SCP Completed.

오류 정보:

cp: cannot stat ‘/arch/file1.xls’: No such file or directory

답변1

다음 중 한두 가지에 주의를 기울여야 합니다.

  • 권한: 파일을 읽을 수 있는 올바른 권한이 없을 수 있습니다.
  • 여러 줄 답변: 조회 결과로 여러 파일이 제공될 수 있습니다.

간단히 말해서, 아마도 귀하의 문제는 sshpass.

이제부터 권한 관련 문제는 없는 것으로 간주합니다.

당신이 할 수 있는 일은 다음과 같습니다:

files="$(sshpass -p "passwd" ssh -l username rhost "find /arch -type f -ctime -40")"
for file in ${files}; do
  if sshpass -p "passwd" scp "username@rhost:${file}" /arch; then
    printf "SCP Completed\n"
  fi
done

이론적으로는 접근할 수 없는 파일(폴더) 에 인쇄되기 $files때문에 스크랩할 수 없는 콘텐츠는 없으므로 별도로 관리해야 합니다.findstderr

모든 옵션 중에서 루프에서 조건을 결합 stderr및 추가 하거나 다른 변수(또는 파일)에 오류를 저장하고 별도로 루프를 반복할 수 있습니다.stdoutfor

관련 정보