用shell 脚本登陆远程ftp 1.如何确认ftp连接成功2.如何确认文件是否上传成功3.如何返回一些参数信息

#!/bin/sh
FTP_HOST=$5
FTP_DIR=$6
FTP_FILENAME=$7
DOWNLOAD_DIR=$8
FTP_USER=$9
FTP_PASSWORD=$10
FTP_HOST_PORT=$11
FTP_TRANS_MODE=$12

cd $DOWNLOAD_DIR
ftp -i -n $FTP_HOST $FTP_HOST_PORT <<FTPEOF
user $FTP_USER $FTP_PASSWORD
cd $FTP_DIR
$TRANS_MODE
put $FTP_FILENAME
quit
FTPEOF
1.如何在连接之前先测试是否能连接成功,成功继续,不成功返回给调用程序一些信息
2.如何确认文件是否上传成功
请高手们解答一下,不甚感激!

在上传的机器写个验证脚本。用cron定时执行。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-12-04
我做过这个,说下我的思路。

将错误输出导出到文件err.log,方便后续检查。ftp连接是否成功和文件上传是否成功都可以通过这个来检查。
(ftp -i -n $FTP_HOST $FTP_HOST_PORT <<FTPEOF
user $FTP_USER $FTP_PASSWORD
cd $FTP_DIR
$TRANS_MODE
put $FTP_FILENAME
quit
FTPEOF
) 2>>err.log
if [ -s err.log ]; then #文件存在且不为空
echo "FTP连接和文件上传都成功"
else
#你可以测试一下失败的情况看下错误信息
#然后用grep通过在err.log文件中查找关键字方法来确认是FTP连接失败还是文件上传失败。
fi

返回一些参数信息不知道什么意思。
你是要用另一个脚本来调用这个脚本吗?还是就做在一个脚本里?追问

我在退出(quit)之前用echo '******测试***' 这样子的来输出测试信息,为什么ftp会不识别,提示
?Invalid command

要是想在put file之后直接输出一些提示信息,应该怎么样做?谢谢

追答

<<FTPEOF 与 FTPEOF 之间的内容必须是FTP支持的命令(这是shell的Here documents的用法),这中间就等于是进入了FTP命令环境,echo这种shell命令是不能放在里面的。
在此之间你无法主动输出一些提示信息,只能是通过捕获FTP的输出来判断。

本回答被提问者和网友采纳

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网