如何一起使用FTP和SFTP?

时间:2014-01-30 13:02:49

标签: ftp sftp

我需要制作一个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语法而不是来自脚本......

我希望我把所有内容都包括在内,如果您需要任何进一步的信息来帮助我,请告诉我。

1 个答案:

答案 0 :(得分:1)

比较数字时需要使用“-eq”而不是“=”:

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

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