免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 21360 | 回复: 12

ftp mput命令行可以,脚本不行. [复制链接]

论坛徽章:
0
发表于 2008-08-29 11:56 |显示全部楼层
脚本执行情况:

  1. [oracle@seker backup_script]$ date
  2. 2008年 08月 29日 星期五 10:58:30 CST
  3. [oracle@seker backup_script]$  touch /home/rman_backup/file6 /home/rman_backup/file7 /home/rman_backup/file8 /home/rman_backup/file9
  4. [oracle@seker backup_script]$ ./fa.sh #这里获取变量后,加了echo $file_names 确认变量里四个文件路径
  5. /home/rman_backup/file7 /home/rman_backup/file8 /home/rman_backup/file6 /home/rman_backup/file9
  6. [oracle@seker backup_script]$ date
  7. 2008年 08月 29日 星期五 10:58:46 CST
  8. [oracle@seker backup_script]$ cat fa.sh
  9. #!/bin/bash

  10. file_names=$(find /home/rman_backup -type f -cmin -10|xargs)
  11. echo $file_names
  12. standby_ip=11.10.2.1
  13. standby_port=21
  14. standby_user=oracle
  15. standby_passwd=oracle
  16. standby_dir=/home/rman_backup/
  17. if [ -n "$file_names" ]
  18. then
  19.       echo "open $standby_ip $standby_port
  20.       user $standby_user $standby_passwd
  21.       bin
  22.       prompt      
  23.       cd $standby_dir
  24.       mput $file_names
  25.       close
  26.       bye"|ftp -i -in >& /dev/null

  27. fi

  28. 到目的主机目录查看
  29. $ ll -thr |tail -4
  30. 只发现file7,file8被传过来了.file6,file9没传.
  31. -rw-r--r-- 1 oracle oinstall    0 08-29 11:00 file8
  32. -rw-r--r-- 1 oracle oinstall    0 08-29 11:00 file7

  33. 我想不明白.
  34. 谁给咱看看这是为什么呢?
复制代码


手动测试mput :

  1. [oracle@seker backup_script]$ ftp
  2. ftp> open 11.10.2.1 21
  3. Connected to 11.10.2.1.
  4. 220 (vsFTPd 2.0.5)
  5. 530 Please login with USER and PASS.
  6. 530 Please login with USER and PASS.
  7. KERBEROS_V4 rejected as an authentication type
  8. Name (11.10.2.1:oracle):
  9. 331 Please specify the password.
  10. Password:
  11. 230 Login successful.
  12. Remote system type is UNIX.
  13. Using binary mode to transfer files.
  14. ftp> bin
  15. 200 Switching to Binary mode.
  16. ftp> prompt
  17. Interactive mode off.
  18. ftp> cd /home/rman_backup
  19. 250 Directory successfully changed.
  20. ftp> mput /home/rman_backup/file7 /home/rman_backup/file8 /home/rman_backup/file6 /home/rman_backup/file9
  21. local: /home/rman_backup/file7 remote: /home/rman_backup/file7
  22. 227 Entering Passive Mode (11,10,2,1,91,153)
  23. 150 Ok to send data.
  24. 226 File receive OK.
  25. local: /home/rman_backup/file8 remote: /home/rman_backup/file8
  26. 227 Entering Passive Mode (11,10,2,1,210,38)
  27. 150 Ok to send data.
  28. 226 File receive OK.
  29. local: /home/rman_backup/file6 remote: /home/rman_backup/file6
  30. 227 Entering Passive Mode (11,10,2,1,148,134)
  31. 150 Ok to send data.
  32. 226 File receive OK.
  33. local: /home/rman_backup/file9 remote: /home/rman_backup/file9
  34. 227 Entering Passive Mode (11,10,2,1,235,10)
  35. 150 Ok to send data.
  36. 226 File receive OK.
  37. ftp> close
  38. 221 Goodbye.
  39. ftp> bye   
  40. [oracle@seker backup_script]$
  41. 到目的主机目录查看
  42. $ ll -thr |tail -4
  43. -rw-r--r-- 1 oracle oinstall    0 08-29 11:41 file9
  44. -rw-r--r-- 1 oracle oinstall    0 08-29 11:41 file8
  45. -rw-r--r-- 1 oracle oinstall    0 08-29 11:41 file7
  46. -rw-r--r-- 1 oracle oinstall    0 08-29 11:41 file6

复制代码


我死活没想明白是为啥
谁能给解释一下 为什么脚本里只能mput传两个文件...

[ 本帖最后由 Seker 于 2008-8-29 11:57 编辑 ]

论坛徽章:
0
发表于 2008-08-29 12:03 |显示全部楼层
有交互的话~~
用expect会简单一些~

[ 本帖最后由 gavinzhm 于 2008-8-29 12:05 编辑 ]

论坛徽章:
0
发表于 2008-08-29 12:22 |显示全部楼层
换成here文档方式试一下

论坛徽章:
8
摩羯座
日期:2014-11-26 18:59:452015亚冠之浦和红钻
日期:2015-06-23 19:10:532015亚冠之西悉尼流浪者
日期:2015-08-21 08:40:5815-16赛季CBA联赛之山东
日期:2016-01-31 18:25:0515-16赛季CBA联赛之四川
日期:2016-02-16 16:08:30程序设计版块每日发帖之星
日期:2016-06-29 06:20:002017金鸡报晓
日期:2017-01-10 15:19:5615-16赛季CBA联赛之佛山
日期:2017-02-27 20:41:19
发表于 2008-08-29 12:29 |显示全部楼层
|ftp

看看过程是什么样的,你都>& /dev/null怎么观察啊?

论坛徽章:
0
发表于 2008-08-29 13:06 |显示全部楼层

回复 #4 waker 的帖子


  1. [oracle@seker backup_script]$ cat fa.sh

  2. #!/bin/bash

  3. file_names=$(find /home/rman_backup -type f -cmin -10|xargs)
  4. echo $file_names
  5. standby_ip=11.10.2.1
  6. standby_port=21
  7. standby_user=oracle
  8. standby_passwd=oracle
  9. standby_dir=/home/rman_backup/
  10. if [ -n "$file_names" ]
  11. then
  12. #    for i in $file_names
  13. #     do
  14.       echo "open $standby_ip $standby_port
  15.       user $standby_user $standby_passwd
  16.       bin
  17.       prompt      
  18.       cd $standby_dir
  19.       mput $file_names
  20.       close
  21.       bye"|ftp -i -in # >& /dev/null
  22. #    done
  23. fi
  24. [oracle@seker backup_script]$

  25. [oracle@seker backup_script]$ ./fa.sh
  26. /home/rman_backup/file7 /home/rman_backup/file8 /home/rman_backup/file6 /home/rman_backup/file9
  27. Please login with USER and PASS.
  28. Please login with USER and PASS.
  29. KERBEROS_V4 rejected as an authentication type
  30. Interactive mode on.
  31. mput /home/rman_backup/file7? mput /home/rman_backup/file8? mput /home/rman_backup/file6? mput /home/rman_backup/file9? [oracle@seker backup_script]$
  32. [oracle@seker backup_script]$

复制代码

目的主机依旧是传了列表里的2个文件,使用for一个一个传是没问题;
但不明白为什么mput就不行.已经询问过file6 和 file9了.
难道prompt 在后两个参数给的确认是NO ?

Interactive mode on.
mput /home/rman_backup/file7? mput /home/rman_backup/file8? mput /home/rman_backup/file6? mput /home/rman_backup/file9?


[oracle@S007 rman_backup]$ ls file*
file7  file8
[oracle@S007 rman_backup]$

论坛徽章:
0
发表于 2008-08-29 13:08 |显示全部楼层
回上两位.
我只是想知道为什么mput 不可以全部传递;
发这个帖子的目的,不是想咨询其他方法;

论坛徽章:
11
金牛座
日期:2015-03-19 16:56:22数据库技术版块每日发帖之星
日期:2016-08-02 06:20:00数据库技术版块每日发帖之星
日期:2016-04-24 06:20:00数据库技术版块每日发帖之星
日期:2016-04-13 06:20:00IT运维版块每日发帖之星
日期:2016-04-13 06:20:00数据库技术版块每日发帖之星
日期:2016-02-03 06:20:00数据库技术版块每日发帖之星
日期:2015-08-06 06:20:00季节之章:春
日期:2015-03-27 15:54:57羊年新春福章
日期:2015-03-27 15:54:37戌狗
日期:2015-03-19 16:56:41数据库技术版块每日发帖之星
日期:2016-08-18 06:20:00
发表于 2008-08-29 13:17 |显示全部楼层
ftp 里的命令顶格写
mput需要要非交互模式下做
ftp -in 或者加语句 prom off

论坛徽章:
0
发表于 2012-03-13 18:34 |显示全部楼层
liaosnet 发表于 2008-08-29 13:17
ftp 里的命令顶格写
mput需要要非交互模式下做
ftp -in 或者加语句 prom off


你这不是扯淡,人家都写上了。 还出这样的问题   prom

论坛徽章:
0
发表于 2012-03-14 18:15 |显示全部楼层
我理解了下,应该是变量的2次替换的问题。
你在$执行,是每次都启动一个进程(可以通过进程id看是不一样的),所以每一次都会执行一次变量替换。

而在同一个脚本里执行,他只会替换一次。
所以你可以用() 或者把ftp脚本存成一个shell文件,再调用。

论坛徽章:
0
发表于 2012-03-14 18:29 |显示全部楼层
mput 怎么用?
是ftp client 对put 的增强
ftp 协议 只有put
所以你 既然用脚本里
就直接put 呗
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP