首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >FTP错误处理

FTP错误处理
EN

Stack Overflow用户
提问于 2011-01-10 21:00:56
回答 2查看 2.3K关注 0票数 0

我有一个KornShell (ksh)脚本,它可以写出FTP脚本并执行,以便从windows服务器获取一些文件到UNIX。

代码语言:javascript
复制
echo "user <username> <pwd>" >ftpin.out
echo "bin">>ftpin.out
echo "get file.txt" >>ftpin.out
echo "get file2.txt" >>ftpin.out
echo "!echo $?">>ftpin.out
echo"bye">>ftpin.out

ftp -n -i servername <ftpin.out
echo $?

在这里,我无法检查源Windows系统上是否存在该文件。因为这种常见的错误处理不起作用,而$?当任何文件存在而其他文件不存在时,总是为0。我甚至尝试检查ERRORLEVEL,但这在UNIX(Solaris10)上不起作用。

有没有人可以展示简单的错误处理示例,可以工作或如何做?日志文件解析也被考虑在内,但是有没有其他内置的方法呢?其他FTP机制不在讨论范围之内。我们使用的是普通的老式FTP。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-01-11 13:05:11

感谢您的回复。我正在使用下面的方法来使它工作。

代码语言:javascript
复制
echo "user <username> <pwd>" >ftpin.out
echo "bin">>ftpin.out
echo "get file.txt" >>ftpin.out
echo "! [ ! -f file.txt ] && ksh alertme.sh" >>ftpin.out
echo "get file2.txt" >>ftpin.out
echo "! [ ! -f file2.txt ] && ksh alertme.sh" >>ftpin.out
echo"bye">>ftpin.out

ftp -n -i servername <ftpin.out

通过上面的方法,如果FTP无法复制一个文件,如果该文件不在源服务器中,那么我将调用alertme.sh脚本向我发送一条错误消息。这样,我甚至可以使用它来覆盖ftpin.out本身,以停止下一次获取ftp中的文件。为此,我将测试下面的一个。

代码语言:javascript
复制
echo "! [ ! -f file.txt ] && echo bye>>ftpin.out" >>ftpin.out

再次感谢。希望这对任何面临类似困难的人都有所帮助。

票数 0
EN

Stack Overflow用户

发布于 2011-01-10 21:34:16

我不认为阅读$?都会起作用的。您只需从执行的子subshell中获取值(使用!命令)。

我建议您可以查看expect:http://expect.sourceforge.net/,它是免费的,可能可以在您的Linux发行版的存储库中找到。

在网页上:

Expect是一款自动化交互式应用程序的工具,如远程登录、ftp、密码、fsck、rlogin、tip等。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4647094

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档