2011-04-13 159 views
2

我seacrhed網站對於這個問題,但找不到solution.Problem有關sftp.I正在運行一個腳本,accepets 7個參數,不SSH和上傳文件對SFTP server.Parameters i電源爲─服務器,用戶,端口,source_directory,target_directory,source_file和tager_file。 如果一切順利,文件沒有任何錯誤和返回代碼上傳0 問題是,如果任何一個參數是錯誤的,就像目標目錄,即使在當時的腳本返回0作爲返回value.Here的腳本如何looks-SFTP返回代碼

typeset targetUsername=$1 

typeset targetHostname=$2 

typeset sftpPort=$3 

typeset sourceDir=$4 

typeset targetDir=$5 

typeset sourceFilename=$6 

typeset targetFilename=$7 

typeset cmdPut="put ${sourceDir}/${sourceFilename} ${targetTempDir}/${tmpFileNam 
e}" 

typeset cmdRen="rename ${targetTempDir}/${tmpFileName} ${targetDir}/${targetFile 
name}" 

sftp ${sftpOption} ${targetUsername}@${targetHostname} <<EOF 

${cmdPut} 

${cmdRen} 

bye 
EOF 

sftpStatus=$? 

sftpStatus應該返回status.But狀態總是爲0。 任何想法,如何解決這個問題? 非常感謝提前。

回答

5

您需要在批處理模式下運行sftp,方法是將您的命令放入一個文件並將其傳遞到sftp。如果出現故障,您將獲得1的退出碼,成功則爲0。

下面是一些示例代碼:

# create a temporary file containing sftp commands 
BATCH_FILE="/tmp/$(basename $0).$$.tmp" 
echo ${cmdPut} > ${BATCH_FILE} 
echo ${cmdRen} >> ${BATCH_FILE} 

# run sftp in batch mode 
sftp -b ${BATCH_FILE} ${sftpOption} ${targetUsername}@${targetHostname} 
sftpStatus=$? 

rm ${BATCH_FILE} 
+0

非常感謝。我會很快嘗試,並將結果放在這裏。 – 2011-04-13 10:00:09

+0

Thanks.It的作品。 – 2011-04-13 10:56:12

+0

嗨,我M在重命名該文件得到錯誤。「沒有這樣的文件或目錄」 – 2011-04-13 12:48:40