免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1847 | 回复: 5
打印 上一主题 下一主题

[原创]一个FTP脚本,能用的随便用【6楼】 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-04-13 18:57 |只看该作者 |倒序浏览
echo [abcd]|sed -n ''

怎么得到abcd啊?

  1. echo [abcd]|sed 's:^\[\([^\]]*\):\1:'

  2. abcd]
复制代码



想用awk把 [] 设成FS 搞不好

[ 本帖最后由 月波无漾 于 2007-4-14 12:37 编辑 ]

论坛徽章:
0
2 [报告]
发表于 2007-04-13 19:01 |只看该作者

  1. echo [abcd] | sed -n 's:[[]\([^]]*\)[]]:\1:p'
复制代码

论坛徽章:
0
3 [报告]
发表于 2007-04-13 19:05 |只看该作者
问题是这样的:最开始的时候写了个FTP脚本,只是get 2个文件,现在都要从5个不用的地方取5个不同文件,就想脚本直接读配置
  1. [abcd]
  2. host=xx.xx.xx.xx
  3. user=aaa
  4. passwd=aaa
  5. ftpdir=/aaa/
  6. filename=aaa${yyyymmdd}.txt

  7. [efgh]
  8. host=yy.yy.yy.yy
  9. user=bbb
  10. passwd=bbb
  11. ftpdir=/
  12. filename=bbb${yyyymmdd}.txt
复制代码


然后一次读取一个配置文件,直接eval.

再用函数ftp

  1. getfile()
  2. {
  3.     [ ${host:=x} = "x" ] && echo "host is null" && exit 0
  4.     [ ${user:=x} = "x" ] && echo "user is null" && exit 0
  5.     [ ${passwd:=x} = "x" ] && echo "passwd is null" && exit 0
  6.     [ ${ftpdir:=x} = "x" ] && echo "ftpdir is null" && exit 0
  7.     [ ${filename:=x} = "x" ] && echo "filename is null" && exit 0
  8.     [ ${workdir:=x} = "x" ] && echo "workdir is null" && exit 0
  9.    
  10.     ftp -i -n -v $host <<END
  11.     user $user $passwd
  12.     ascii
  13.     lcd $workdir
  14.     cd $firdir
  15.     get $filename
  16.     by
  17. END

  18. }
复制代码


现在做的就是剩下的工作

论坛徽章:
0
4 [报告]
发表于 2007-04-13 19:06 |只看该作者
原帖由 Edengundam 于 2007-4-13 19:01 发表

  1. echo [abcd] | sed -n 's:[[]\([^]]*\)[]]:\1:p'
复制代码

放入[]中的[ 不用再转义了吗?

论坛徽章:
0
5 [报告]
发表于 2007-04-13 19:27 |只看该作者
致命错误.通过管道eval 设置变量好象是一点都不现实的,即使能设置都进子进程了(??)

论坛徽章:
0
6 [报告]
发表于 2007-04-13 19:45 |只看该作者
加上 Edengundam 的指点.整个脚本基本成型,凑合着能用了
配置就在楼顶的下边


  1. #放弃版权,随便传播,非稳定因素造成的后果自负
  2. #!/bin/sh
  3. USER=`whoami`
  4. . /home/$USER/.profile >/dev/null 2>&1

  5. getfile()
  6. {
  7.     [ ${host:=x} = "x" ] && echo "host is null" && exit 0
  8.     [ ${user:=x} = "x" ] && echo "user is null" && exit 0
  9.     [ ${passwd:=x} = "x" ] && echo "passwd is null" && exit 0
  10.     [ ${ftpdir:=x} = "x" ] && echo "ftpdir is null" && exit 0
  11.     [ ${filename:=x} = "x" ] && echo "filename is null" && exit 0
  12.     [ ${workdir:=x} = "x" ] && echo "workdir is null" && exit 0
  13.    
  14.     ftp -i -n -v $host <<END
  15.     user $user $passwd
  16.     ascii
  17.     lcd $workdir
  18.     cd $ftpdir
  19.     get $filename
  20.     by
  21. END

  22. }

  23. yyyymmdd=`date +%Y%m%d`
  24. cfgfile=/app1/_ftp.cfg
  25. workdir=/app1/

  26. for task in `grep "\[.*\]" $cfgfile | sed -n 's:[[]\([^]]*\)[]]:\1:p'`
  27. do
  28.     echo $task
  29.     for line in `sed -n "/\[$task\]/,/^$/"p $cfgfile|grep -v "\[$task\]"`
  30.     do
  31. #       tmpstr=`echo $line|cut -d= -f1`
  32.         eval $line
  33. #       eval echo \$$tmpstr
  34.     done
  35.     getfile
  36. done
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP