设为首页 收藏本站
查看: 741|回复: 0

shell 学习二

[复制链接]

尚未签到

发表于 2018-8-23 10:02:37 | 显示全部楼层 |阅读模式
  配置变更:
  现有某监控策略的配置文件如下
  #最大监控项数量
  MAX_MONITOR_NUM : 5
  #当前监控项数量
  CUR_MONITOR_NUM : 3
  #监控配置
  #配置说明:第一域为IP信息,第二域为服务器名,第三域为监控类型(对于单网卡机器采用0类监控,对于双网卡机器采用1类监控)
  IP_ADDRESS0:(1.1.1.0) DOMAIN:(bd-test-machine0.bd) MONITOR_TYPE:(0)
  IP_ADDRESS1:(1.1.1.1) DOMAIN:(bd-test-machine1.bd) MONITOR_TYPE:(0)
  IP_ADDRESS2:(1.1.1.2,1.2.1.2) DOMAIN:(bd-test-machine2.bd,bd-test-machine2-in.bd) MONITOR_TYPE:(1)
  #监控端口
  MONITOR_PORT : 1234
  现给出一份需要新增到该监控策略下的服务器列表,请根据给出服务器的情况编写脚本更新现有配置,要求
  1、当前监控数为添加之后的监控总数,如变更后当前监控数大于最大监控数则需要对最大监控数进行对应调整
  2、IP信息中的编号在现有基础上顺序递增
  3、判断新增服务器的网卡属性,按注释中的监控类型说明对具体的MONITOR_TYPE赋值(假设脚本运行环境对新增机器已有信任关系,可直接ssh登陆)
  vi chang_conf.sh
  #!/bin/bash
  ##
  ## 第二个练习题 最后修改于 4.16 10:30
  ####文件及目录信息
  D=`pwd`
  iplist="host.txt"
  conf_flie="2.conf"
  ###找出当前的序号
  num=`grep IP_ADDRESS ${conf_flie}|tail -n 1 |awk -F ':' '{print $1}'|cut -c 11-`
  ###最后一条记录的行号
  line=`awk "/IP_ADDRESS$num/{print NR}" ${conf_flie}`
  ###
  cd ${D}
  ### 最大 当前 以及即将插入的监控数量
  MAX_NUM=`awk '/MAX_MONITOR_NUM/{print $NF}' ${conf_flie}`
  CUR_NUM=`awk '/CUR_MONITOR_NUM/{print $NF}' ${conf_flie}`
  INS_NUM=`wc -l < ${iplist}`
  let NEW_NUM=${CUR_NUM}+${INS_NUM}
  #####插入当前监控项数量##
  if [ &quot;$NEW_NUM&quot; -lt &quot;$MAX_NUM&quot; ]; then
  sed -i &quot;s/CUR_MONITOR_NUM : ${CUR_NUM}/CUR_MONITOR_NUM : ${NEW_NUM}/g&quot; ${conf_flie}
  else
  sed -i &quot;s/CUR_MONITOR_NUM : ${CUR_NUM}/CUR_MONITOR_NUM : ${NEW_NUM}/g&quot; ${conf_flie}
  let NEW_MAX_NUM=${MAX_NUM}+2
  sed -i &quot;s/MAX_MONITOR_NUM : ${MAX_NUM}/MAX_MONITOR_NUM : ${NEW_MAX_NUM}/g&quot; ${conf_flie}
  fi
  ###插入配置说明###
  for i in $(cat ${iplist})
  do
  let line=$line+1
  let num=$num+1
  echo &quot;$i&quot; > tem_file
  IP=`awk -F ',' '{print $1}' tem_file`
  HOSTNAME=`awk -F ',' '{print $2}' tem_file`
  ### 判定网卡的数量
  ETH=`ssh ${HOSTNAME} /sbin/ifconfig |grep HWaddr|wc -l`
  if [ $ETH == &quot;1&quot; ];then
  sed -i &quot;${line}i IP_ADDRESS${num}:($IP) DOMAIN:($HOSTNAME) MONITOR_TYPE:(0)&quot; ${conf_flie}
  else
  sed -i &quot;${line}i IP_ADDRESS${num}:($IP) DOMAIN:($HOSTNAME) MONITOR_TYPE:(1)&quot; ${conf_flie}
  fi
  done
  ####删除临时文件
  cd ${D} && rm -rf tem_file


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.iyunv.com/thread-555414-1-1.html 上篇帖子: create directory @shell 下篇帖子: shell实例(关于内存)
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表