我需要制作一个Unix脚本,我需要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 $LOGINID@$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语法而不是来自脚本......
我希望我把所有内容都包括在内,如果您需要任何进一步的信息来帮助我,请告诉我。
答案 0 :(得分:1)
比较数字时需要使用“-eq”而不是“=”:
if [[ $rc -eq 0 ]]; then...
if [[ $rc1 -ne 0 ]]; then...