1
想知道在KornShell(ksh)腳本中檢查文件傳輸協議(FTP)是否成功的一些正確方法。在KornShell腳本中檢查FTP成功 - 失敗
想知道在KornShell(ksh)腳本中檢查文件傳輸協議(FTP)是否成功的一些正確方法。在KornShell腳本中檢查FTP成功 - 失敗
有這麼多的ftp客戶端,其中許多不一定遵循std返回約定,你必須做一些簡單的測試,然後進行相應的編碼。
如果幸運的話,您的ftp客戶端會返回std退出代碼,並通過man ftp
(您知道關於man頁面?)來記錄它們。在這種情況下,0表示成功,任何非零表示某種問題,所以非常簡單的解決方案是一樣的東西
if ftp [email protected] File remote/path ; then
print -- 'sucessfully sent file'
else
print -u2 -- 'error sending file'
fi
(不太清楚的是,ftp [email protected] file remoteDir
是完全正確的,(我沒有現在訪問客戶端並且多年沒有使用過ftp(你不應該使用sftp !?--)),但是我在這兩個示例中都使用相同的方式)。
您可能需要多一點控制權,所以您需要捕獲返回碼。
ftp [email protected] 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 [email protected] 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
我希望這有助於。