2011-01-10 5 views
0

FTP 스크립트를 작성하고 Windows 서버에서 UNIX로 일부 파일을 가져 오는 KornShell (ksh) 스크립트가 있습니다.FTP 오류 처리

echo "user <username> <pwd>" >ftpin.out 
echo "bin">>ftpin.out 
echo "get file.txt" >>ftpin.out 
echo "get file2.txt" >>ftpin.out 
echo "!echo $?">>ftpin.out 
echo"bye">>ftpin.out 

ftp -n -i servername <ftpin.out 
echo $? 

원본 Windows 시스템에 파일이 있는지 여부를 확인할 수 없습니다. 이 일반적인 오류 처리가 작동하지 않기 때문에 $? 파일이 있고 다른 파일이 없을 때 항상 0입니다. ERRORLEVEL 검사를 시도했지만 UNIX (Solaris 10)에서는 작동하지 않습니다.

어느 것이 작동하는지 또는 수행하는 방법에 대한 간단한 오류 처리 샘플을 보여줄 수 있습니까? 로그 파일 파싱도 고려되었지만 다른 방법으로 구축 되었습니까? 다른 FTP 메커니즘은 범위를 벗어납니다. 우리는 평범한 구식 FTP를 사용하고 있습니다.

+0

'ftp'를 사용하지 않고'wget','curl' 또는'lftp'로 전환하십시오. –

+0

죄송합니다 ... 현재 조직에서 원하지 않습니다. 나는 이것에서 무력하다. –

답변

0

주셔서 감사합니다 응답 등 텔넷, FTP, passwd를, fsck를, RLOGIN, 팁 등의 대화 형 애플리케이션을 자동화하기위한 도구입니다. 나는 아래의 방법을 사용하여 효과가있다. 위의 방법으로

echo "user <username> <pwd>" >ftpin.out 
echo "bin">>ftpin.out 
echo "get file.txt" >>ftpin.out 
echo "! [ ! -f file.txt ] && ksh alertme.sh" >>ftpin.out 
echo "get file2.txt" >>ftpin.out 
echo "! [ ! -f file2.txt ] && ksh alertme.sh" >>ftpin.out 
echo"bye">>ftpin.out 

ftp -n -i servername <ftpin.out 

는 FTP는 파일이 다음 내가 나에게 오류 메시지가 메일 alertme.sh 스크립트를 호출합니다 원본 서버에없는 경우 하나 개의 파일을 복사하는 데 실패합니다. 이 방법을 사용하여 ftpin.out 자체를 덮어 쓰면 ftp에서 다음 파일 가져 오기를 중지 할 수도 있습니다. 나는 이것을 위해 아래의 것을 시험 할 것이다.

echo "! [ ! -f file.txt ] && echo bye>>ftpin.out" >>ftpin.out 

다시 한번 감사드립니다. 비슷한 어려움에 직면 한 모든 신체에 도움이되기를 바랍니다.

+0

현재 해결 중입니다. –

1

나는 $를 읽는다고 생각하지 않습니까? 작동합니다. 당신은 실행 된 서브 쉘에서 값을 얻습니다 (! 명령 사용).

기대해 보시길 권합니다. http://expect.sourceforge.net/ 무료이며 리눅스 배포판 저장소에서 사용 가능할 것입니다. 웹 페이지에서

:

는 기대는

+0

답변 해 주셔서 감사합니다. 그러나 필자는 현재 현재 환경에 어떤 도구도 설치할 기회없이 ftp 자체를 사용하도록 제한하고 있다고 언급했습니다. –