2016-06-22 84 views
0

我試圖編寫一個將文件推送到另一個服務器的unix腳本。 我需要知道文件是否被成功推送。SFTP中的錯誤陷阱

到目前爲止,我發現的是將sftp錯誤寫入文件。

sftp ${SFTP_USER}@${SFTP_HOST} << ENDP 2> /var/local/err_log.txt 
cd ${SFTP_DIR} 
put ${OUTPUT_FILE} 
bye 
ENDP 

我的假設是「2>」只會在err_log中寫入錯誤。 所以如果我的err_log不是空的,這意味着我遇到了一個錯誤。

我的問題是,這是一個好方法嗎? 這是正確的假設,只有錯誤將寫入err_log文件中? 還有其他更好的方法來做到這一點嗎?

+0

'如果rsync的-ua /文件/至/轉讓$ {}用戶@ $ {host}:/ path/to/put/it;然後回聲「一切都好」;其他回聲「xfer失敗」; fi'似乎是一種更好的方法來處理它。 (假設'host'上有'ssh'訪問權限) –

+0

嗨David,ssh訪問不可用。只提供了sftp。 – user2058738

+0

無賴 - 'rsync'的功能如此強大...... –

回答

0

如果你想限制標準錯誤記錄到錯誤 -only,你應該使用Quiet模式:

-q  Quiet mode: disables the progress meter as well as warning and 
      diagnostic messages from ssh(1). 
+0

相當模式是針對scp嗎?不幸的是,只有sftp訪問提供給我。 – user2058738

+0

我使用openssh 7.2。 *安靜模式*在* sftp *命令中可用 –