【发布时间】:2014-02-22 19:19:30
【问题描述】:
我需要制作一个 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 语法,而是它来自脚本......
我希望我包含了所有内容,如果您需要任何进一步的信息来帮助解决这个问题,请告诉我。
【问题讨论】: