&attach_input |
sftp1 |
put foo |
sftp -b sftp2_input [email protected] |
sftp -b sftp2_input [email protected] |
안타깝게도 Sftp는 입력 파일의 모든 요청을 차례로 실행하며 전송이 작동하는지 여부에 대한 테스트 메커니즘이 없습니다.
명령 매크로를 사용할 수 없기 때문에 대안이 있습니까? gnu_tools 제품은 기대라는 프로그램과 함께 제공됩니다. 명령을 보내고, 여러 가지 응답을 기다리며, 출력 스트림에서 보는 내용에 따라 무언가를 수행하는 데 사용할 수 있습니다. 나는 전문가를 기대하지 않지만 그림 6의 스크립트는 당신이 시작하는 데 도움이 될 것입니다. 웹에서 "스크립트 기대"를 검색하면 간단한 예제를 사용자 지정하는 데 도움이 되는 많은 참조를 찾을 수 있습니다.
# If we get an end-of-file (eof) it means that the sftp process # 이 절차는 키 문자열을 찾는 정규 식 일치를 수행합니다.# 실행된 명령에서 수집된 출력입니다. 이 경우 # 난 그냥 오류의 유형을보고하지만 다른 일을 할 수 있습니다 #뿐만 아니라. 나는 또한 2 개의 오류만 확인합니다. 다른 사람들이 있습니다. 당신은 # 당신이 그들을 찾을 때 그들을 추가합니다. # 프로크 검사 오류 {buf cmd} { [regexp {.*찾을 수 없는} $buf] { "$cmd 실패 : 미인" 반환 1 } [regexp {.*권한 거부} $buf] { "$cmd 실패 : 액세스 문제 nnn"을 넣습니다. 반환 1 } 반환 0 }#시간 시간을 -1로 설정하여 시간 제전에 대한 시간이 없습니다. 기본값은 10초입니다. # 대부분의 파일 전송은 그보다 더 오래 걸린다. 나는 아니오를 설정하기로 결정 # 시간 시간, 당신은 그것을 변경할 수 있습니다. 설정 시간 -1 # 시작 sftp # Sftp 프롬프트를 기다리지만 인증 프롬프트가 발생하면 # 테스트를 위한 간결한 디렉터리 변경 # 모든 수집 된 문자를 전달 하는 오류에 대 한 호출 확인 "푸를 넣어" 보내기 "바 받기" 보내기 "종료자"를 보내십시오. |
expect sftp3.exp 잘못된 서버에 연결했거나 서버가 다시 로드되었습니다.이 스크립트를 다시 실행하려면 서버 키의 유효성을 검사해야 합니다.준비 된 10:41:10 |
expect sftp3.exp sftp> 바 받기원격 파일을 통계할 수 없음: 그러한 파일이나 디렉토리없음 파일 "/SysAdmin/Noah_Davids/sftp_test/bar"를 찾을 수 없습니다. sftp> 바 실패를 얻을 : 찾을 준비가 되지 않은 10:42:11 |
마지막으로 FTP 블로그에서 FTP가 여전히 열려있는 파일을 읽을 수 있었고 경우에 따라 불완전한 파일이 전송되는 것을 언급했으며 FTP 매크로가 파일에 표시될 때까지 기다렸다가 파일을 전송하는 경우 매크로가 더 이상 잠겨 있지 않은지 확인해야한다고 제안했습니다. SFTP에서도 동일한 문제가 발생할 수 있으며 솔루션은 동일합니다. 파일 잠금 체크를 명령 매크로(그림 9)에 배치한 다음 파일이 더 이상 잠긴 경우 적절한 스크립트로 예상되는 호출을 기대할 수 있습니다.
&label AGAIN |