2014-01-30 87 views
2

我需要製作一個Unix腳本,我需要FTP和SFTP功能。讓我詳細描述一下:如何一起使用FTP和SFTP?

我需要從遠程服務器導入幾個文件,現在這些遠程服務器不是都支持ftp或SFTP。所以我需要一個腳本,腳本將首先嚐試執行ftp,如果成功,則從腳本中提取出來,如果不是,則嘗試在該服務器上執行SFTP。

我嘗試了下面的腳本:

log=/opt/app/vertica/cdr/tmp/hpcom/sftp.txt 
LOGINID=abc 
HOST=sftp2.xyz.com 
echo "starting ftp & sftp...." > $log 
ftp -i -n -v $HOST <<-EOFtp >$log 
user $LOGINID $PASSWD 
bye 
EOFtp 
rc=$? 
if [[ $rc = 0 ]]; then 
echo "Successful ftp...$rc" `date "+%Y-%m-%d-%H.%M.%S"` >> $log 
else 
sftp [email protected]$HOST<<EOF > $log 
#cd $DIR 
#get $FILE 
bye 
EOF 
rc1=$? 
if [[ $rc1 != 0 ]]; then 
    echo "Error occured...$rc" `date "+%Y-%m-%d-%H.%M.%S"` >> $log 
else 
echo "Successful sftp...$rc" `date "+%Y-%m-%d-%H.%M.%S"` >> $log 
fi 
fi 

在上面的代碼我的腳本不能正常工作,因爲它應該...以下是日誌文件的輸出

"Not connected. 
Successful ftp...0 2014-01-30-10.03.06" 

這清楚地表明,FTP沒有發生在這臺主機上,所以理想情況下,它應該嘗試做SFTP,但它不會來SFTP語法,而是它的腳本出來...

我希望我包括了一切,請讓我知道我如果您需要更多信息來協助解決這個問題。

回答

1

你需要使用 「當量」,而不是 「=」 比較時數:

if [[ $rc -eq 0 ]]; then... 

if [[ $rc1 -ne 0 ]]; then...