Chinaunix

标题: 大家看看我的关于ftp的shell,有点问题... [打印本页]

作者: coolscplayer    时间: 2003-06-21 21:17
标题: 大家看看我的关于ftp的shell,有点问题...
有一个ftp shell如下:
echo "please enter passwd:"
read mima
ftp -n XXX.XXX.XXX.XXX << !
user USER $mima
lcd /
cd root
prompt
mput *
by
!
if [ $? -eq 0 ]
then echo "ftp completed"
else echo  "ftp failed"
fi
这个shell只要是连接成功,不论是密码错误还是传送文件失败
都会提示ftp completed
请问有什么办法能让程序自动判断是否ftp文件真正的成功呢?
作者: deathcult    时间: 2003-06-21 23:40
标题: 大家看看我的关于ftp的shell,有点问题...
bye not by
作者: 想飞的鱼    时间: 2003-06-21 23:41
标题: 大家看看我的关于ftp的shell,有点问题...
有个苯方法不仅可以实现检查文件是否可以真正传成功,并把不不成功的原因显示出来.你可以FTP里传送的过程写到一个临时文件中,读此文件的内容让程序进行判断即可.
作者: 红袖添香    时间: 2003-06-22 03:13
标题: 大家看看我的关于ftp的shell,有点问题...
[quote]原帖由 "deathcult"]bye not by[/quote 发表:
   

都对   
作者: coolscplayer    时间: 2003-06-22 03:53
标题: 大家看看我的关于ftp的shell,有点问题...
红袖,我不懂你的意思啊
你能告诉我具体怎么实现嘛?
谢谢啦~~~
作者: 红袖添香    时间: 2003-06-22 07:31
标题: 大家看看我的关于ftp的shell,有点问题...
...


用ftp 的返回值不好判断,都是 0
但是在 ftp 中加上 -v 选项,你可以得到更多的信息。

这个是成功取得文件的信息。

ftp1.jpg (72.94 KB, 下载次数: 3)

ftp1.jpg

作者: 红袖添香    时间: 2003-06-22 07:33
标题: 大家看看我的关于ftp的shell,有点问题...
...


这个是登录失败的信息。

ftp2.jpg (60.46 KB, 下载次数: 3)

ftp2.jpg

作者: 红袖添香    时间: 2003-06-22 07:41
标题: 大家看看我的关于ftp的shell,有点问题...
...

你可以看到,FTP 的过程有不同的代号来表示结果,上面

226 - 代表成功
530 - 代表登录失败

还有其它,比如文件不存在 550 等等。

你只要把这些信息,放入一个 log 文件中,到 ftp 过程结束后,用 grep 查一下这些特征代号就可以了。

你的代码无非就是在 ftp 那一句稍微修改一下,

ftp -nv xxx.xxx.xxx.xxx << !  > /tmp/myftp.log
作者: jiaowao    时间: 2003-06-22 12:06
标题: 大家看看我的关于ftp的shell,有点问题...
if [ $? -eq 0 ]
是什么意思
作者: 红袖添香    时间: 2003-06-22 19:13
标题: 大家看看我的关于ftp的shell,有点问题...
原帖由 "jiaowao" 发表:

是什么意思
   


$? 上一条命令的返回值,

[ $? -eq 0 ] 判断上一条命令是否执行成功。
一般 0 表示成功, > 0 表示失败。
作者: coolscplayer    时间: 2003-06-22 21:12
标题: 大家看看我的关于ftp的shell,有点问题...
谢谢红袖~
不过这样还得是人为的来查看log
有办法能让程序自动判断是否真正的传送成功呢?
作者: vantien    时间: 2003-06-22 22:34
标题: 大家看看我的关于ftp的shell,有点问题...
echo "please enter passwd: \c"
stty -echo
read notmima
stty echo
ftp -nv XXX.XXX.XXX.XXX << !  > $$
user USER $notmima
lcd /
cd root
prompt
mput *
by
!
CHK=`grep '^[0-9]' $$ | grep '^530' `
if [ $? -eq 0 ]; then
   echo "Login Error!!"
else
   CHK=`grep '^[0-9]' $$ | grep '^226'`
   if [ $? -eq 0 ]; then
      echo "File upload successed!!"
   fi
fi
rm $$
作者: coolscplayer    时间: 2003-06-23 04:11
标题: 大家看看我的关于ftp的shell,有点问题...
多谢二位啊
我把vantien的改了点
我是直接grep 230 chk
然后判断是否有正确
如果grep出来就是登陆正确
如果没有就是登陆失败
判断传送文件而后上面的一样
不知道有什么问题没?
作者: 红袖添香    时间: 2003-06-23 04:40
标题: 大家看看我的关于ftp的shell,有点问题...
原帖由 "coolscplayer" 发表:
多谢二位啊
我把vantien的改了点
我是直接grep 230 chk
然后判断是否有正确
如果grep出来就是登陆正确
如果没有就是登陆失败
判断传送文件而后上面的一样
不知道有什么问题没?
   


grep '^230' chk  

^ 不可省略,它表示在行首出现这个数字
因为有可能在文字的其它地方出现 ftp 的统计数值中出现相同的值,没有 ^ 会把它也算在内。
作者: coolscplayer    时间: 2003-06-23 04:58
标题: 大家看看我的关于ftp的shell,有点问题...
哦,这样啊,谢谢~~~~~




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2