想知道什么是一些正确的方法来检查文件传输协议(FTP)是否成功KornShell(ksh)脚本内。
有这么多的FTP客户端,其中许多不一定遵循标准的返回约定,你必须做一些简单的测试,然后相应的编码。
如果你幸运的话,你的ftp-client会返回std退出代码,并且通过man ftp
(你知道的man page?)来记录它们。 在这种情况下,0表示成功,任何非零表示某种问题,所以最简单的解决方案就是类似的
if ftp user@remoteHost File remote/path ; then print -- 'sucessfully sent file' else print -u2 -- 'error sending file' fi
(不太确定ftp user@remoteHost file remoteDir
是完全正确的,(我现在没有访问客户端,并且多年没有使用ftp(你不应该使用sftp !?-))但我在这两个例子中使用相同的)。
你可能需要更多的控制,所以你需要捕获返回代码。
ftp user@remoteHost File remote/path ftp_rc=$? case ${ftp_rc} in 0 ) print -- 'sucessfully sent file' ;; 1 ) print -u2 'error on userID' ; exit ${ftp_rc};; 2 ) print -u2 -- 'no localFile found' ; exit ${ftp_rc};; esac
我不确定1或2的含义,这些仅仅是说明性的。 看看你的man ftp
,看看他们是否有记录,或做一个简单的测试,故意一次给ftp一个错误,看看它是如何响应。
如果std错误代码没有被使用或不一致,那么你必须捕获ftp输出并检查它以确定状态
ftp user@remotehost file remote/path > /tmp/ftp.tmp.$$ 2>&1 case $(< /tmp/ftp.tmp.$$ ) in sucess ) print -- 'sucessfully sent file' ;; bad_user ) print -u2 'error on userID' ; exit 1 ;; no_file ) print -u2 -- 'no localFile found' ; exit 2;; esac
我希望这有帮助。