Chinaunix首页 | 论坛 | 博客
  • 博客访问: 208566
  • 博文数量: 39
  • 博客积分: 1057
  • 博客等级: 准尉
  • 技术积分: 926
  • 用 户 组: 普通用户
  • 注册时间: 2011-05-27 20:13
文章分类

全部博文(39)

文章存档

2012年(24)

2011年(15)

分类: Python/Ruby

2012-03-13 19:02:17


点击(此处)折叠或打开

  1. #!/bin/bash
  2. # script:world.sh
  3. # 用来封装自定义的脚本
  4. # 本原始代码只是提供了一个简单的演示,所有自定义的脚本都可以写入最内层的代码块中
  5. # 来源: Lover的工具小屋
  6. # author: Lover

  7. # thinker()
  8. # 将附加在脚本末尾的 域名:IP 抽取出来,用于判断
  9. function thinker(){
  10.         vars=`cat $0 | sed -n '/# BEGINVAR$/,/# ENDVAR$/p' | grep -v -E '# BEGINVAR|# ENDVAR' | sed -n 's/^# //gp'`
  11.         echo $vars
  12. }

  13. # getip()
  14. # 获取本机电信ip
  15. function getip(){
  16.         # -w 精确匹配一个word
  17.         telip=`ifconfig eth0 | grep -w inet | awk -F: '{print $2}' | awk '{print $1}'`
  18.         echo $telip
  19. }

  20. #
  21. # 根据判断本机ip在数组中出现的次数,得到本机有几个服或者需要迭代处理几次
  22. # 最少一次,特例也就是一个服一台机器的情况,设计的原则就是多个服一个ip的通用处理模式
  23. # 一个服一个ip只是我设计的集合的一个子集,也是最简单的情况
  24. #
  25. telip=`getip`
  26. domainip=(`thinker`)

  27. # cc: control center
  28. # 进入到 $cc 目录中
  29. cc='/root/ygfs_cc'
  30. [ -e $cc ] || mkdir $cc
  31. cd $cc

  32. for((i=0;i<${#domainip[@]};i++))
  33. do
  34.     #在同一批次需要处理的域名ip中查找自己出现几次,以判断本ip上需要执行几次功能脚本,通常执行一次就是处理一个服
  35.     echo ${domainip[$i]} | grep -q $telip &&
  36.     {
  37.         #进入本ip本服的管理目录
  38.         [ -e $cc/${domainip[$i]} ] || mkdir $cc/${domainip[$i]}
  39.         cd $cc/${domainip[$i]}

  40.         # 这里就是核心功能块
  41.         # 从下面开始是我们可以手动加入自己功能的部分,至少保证在最后的阶段状态日志前加入,否则系统无法判断
  42.         # 具体分为几个阶段按照实际需要划分,最后一条echo语句为必须,位置必须处于整个代码块的最后面,也就是说至少分为一个阶段

  43.         # 该代码块用来存放功能代码,请保证所有自定义的的代码都在该块内 { ...,当然不是强制性的,你可以将自己的功能写成一个子块或者一个兄弟块
  44.         {
  45.             # Demo
  46.             >$cc/${domainip[$i]}_stage.log
  47.             # stageinfo,都以 *_stage.log 模式,便于管理中心的代理程序来获取状态
  48.             # 记录的格式都是json格式,主要是为了减少服务器端对数据再一次处理,将数据解析的事情交给浏览器
  49.             echo "'${domainip[$i]}':'`basename $0` at `date +%H:%M:%S` task(1/3) 开始执行'" > $cc/${domainip[$i]}_stage.log
  50.             ls -hl /etc
  51.             sleep 3
  52.                         
  53.             # stageinfo
  54.             echo "'${domainip[$i]}':'`basename $0` at `date +%H:%M:%S` task(2/3) 列出etc目录完毕'" > $cc/${domainip[$i]}_stage.log
  55.             date
  56.             sleep 3
  57.                         
  58.             # 最后这个stageinfo必须保留
  59.             echo "'${domainip[$i]}':'`basename $0` at `date +%H:%M:%S` task(3/3) is completed'" > $cc/${domainip[$i]}_stage.log
  60.         }
  61.     }
  62. done

阅读(1773) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~