我有一个要求,我将对不同的服务器执行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
请帮帮我。提前感谢
问题是&
(安培数)。更换
user $user $passwd
带有
user $user "$passwd"
尝试使用双引号而不是引号。或者,如果你知道你的密码总是特定的文本,你可以转义特殊字符$&*在它们前面加一个反斜杠。
你可以从谷歌上尝试一些不同的解决方案:Unix堆栈交换