2015-12-09 78 views
1

我有一個要求,在那裏我會做SFTP到不同的服務器,我想通過一個shell腳本星號 - 登錄失敗

要做到這一點,但密碼是具有星號(*)字符,所以無法登錄 腳本:

host=xxxxx 
user=celcom_mnp 
passwd='CjX3E$4Q&*B6L' 
cd /home/mquser/unicaftp/CMS/batch/OBD/MNP/ 
test=`find . -maxdepth 1 -type f -name "*.csv" -mmin +1 | awk -F "/" '{print $NF}'` 
lftp<<EOF 
open sftp://$host 
user $user $passwd 
cd /MNP_Autoin 
lcd /home/mquser/unicaftp/CMS/batch/OBD/MNP 
mput `echo $test` 
EOF 
OUT=$? 
if [ $OUT -eq 0 ];then 
    echo "$test Succesfully transferred" >> /home/mquser/CIFM_STORE/OBD/obdmnplog.txt 
else 
    echo "Issue with sftp" >> /home/mquser/CIFM_STORE/CEP/PUSH/sftplog.txt 
fi 
mv $test /home/mquser/CIFM_STORE/OBD/TEMPMNP/ 

錯誤信息:

Unknown command `*B6L'. 
cd: Login failed: Login incorrect 

請幫助我。在此先感謝

+0

請你的腳本中的相關部分添加到您的問題。 – Cyrus

+0

@Cyrus:添加完整的腳本。謝謝 – Saibalu

+0

@Cyrus:我無法用上面的密碼登錄,可能是因爲密碼中的特殊字符。你可以參考我上面提供的錯誤信息。謝謝 – Saibalu

回答

1

問題是&(符號)。更換

user $user $passwd 

user $user "$passwd" 
+0

非常感謝你現在的工作。 – Saibalu

1

嘗試使用雙引號而不是引號。 或者如果你知道你的密碼將永遠是那個特定的文本,你可以通過在它們前面加一個反斜槓來避開特殊字符$ & *。

有幾個不同的解決方案,你可以從谷歌搜索: Unix Stack Exchange

+0

嗨,謝謝你的回覆。即使我用雙引號嘗試,也是一樣的錯誤。 – Saibalu

+0

你可以通過在他們前面加一個\來逃避他們嗎? 有時候我也通過使用一個'和一個' 「'asdf&* $ asdf'」 –

+0

成功了,如果在這種情況下只有&被反斜線以這種方式轉義:'passwd ='CjX3E $ 4Q \ * B6L''。 – Cyrus