Linux脚本练习一
2016-01-15 19:06
399 查看
要求是在下面的文件中
1、将defaults块中的包含timeout server 以及包含timeout client的行删除
2、将listen开头的块中,除了rabbitmqs那个块,其他都添加timeout server 5m、timeout client 5m两行,注意缩进的空格要用变量来代替,如果以及添加过这两行,则不需要再添加。
脚本文件如下所示,代码的注释之后来补上哈!
1、将defaults块中的包含timeout server 以及包含timeout client的行删除
2、将listen开头的块中,除了rabbitmqs那个块,其他都添加timeout server 5m、timeout client 5m两行,注意缩进的空格要用变量来代替,如果以及添加过这两行,则不需要再添加。
global chroot /var/lib/haproxy daemon group haproxy log 10.3.0.104 local7 <略> defaults log global option log-health-checks timeout http-request 10s timeout queue 1m timeout server 1m timeout client 1m timeout check 10s listen cinder_api_cluster bind 10.3.0.201:8776 balance source option tcplog timeout server 5m timeout client 5m server ror-cinder2 10.3.0.118:8776 check fall 5 inter 2000 rise 2 listen glance_api_cluster bind 10.3.0.201:9292 option httpchk option tcplog server ror-glance1 10.3.0.115:9292 check fall 5 inter 2000 rise 2 listen rabbitmqs bind 10.3.0.201:5672 mode tcp balance roundrobin timeout server 48h timeout client 48h timeout connect 5s server zone-ror-rabbitmq1 10.3.0.108:5672 check fall 3 inter 5000 rise 2 server zone-ror-rabbitmq2 10.3.0.109:5672 check fall 3 inter 5000 rise 2
脚本文件如下所示,代码的注释之后来补上哈!
getline1=$(grep -A20 -n 'defaults' beforeb | grep 'timeout server' | cut -d - -f 1) #获取beforeb文件中defaults后20行内,包含timeout server行的行号 getlisten=$(grep -A20 -n 'defaults' beforeb | grep 'listen' | cut -d - -f 1) arrayline1=($(echo "$getline1" | tr '\n' ' '|tr -s ' ')) #将可能包含多个行号的变量$getline1拆分成数组arrayline1 arraylisten=($(echo "$getlisten" | tr '\n' ' '|tr -s ' ')) if [[ ${arrayline1[0]} -lt ${arraylisten[0]} ]];then sed -i "${arrayline1[0]}d" beforeb fi #如果timeout server第一次出现的行号比listen第一次出现的行号小,就将timeout行删除 getline2=$(grep -A20 -n 'defaults' beforeb | grep 'timeout client' | cut -d - -f 1) arrayline2=($(echo "$getline1" | tr '\n' ' '|tr -s ' ')) if [[ ${arrayline2[0]} -lt ${arraylisten[0]} ]];then sed -i "${arrayline2[0]}d" beforeb fi sed -i '/timeout client 5m/d' beforeb sed -i '/timeout server 5m/d' beforeb getlisten_below=$(grep -n 'listen' beforeb|head -n 1 | awk -F: '{print $1}') #获取文件中第一次出现listen的行号 getlisten_below=$(($getlisten_below+1)) echo ${getlisten_below} line2="`sed -n "${getlisten_below}p" beforeb`" #line2为listen行下一行的内容 spacelength=`echo "${line2}" | awk '{str=length($0); sub(/^[ ]*/,"",$0); print str-length($0);}'` #获取该行字符前面的空格 echo ${spacelength} string1="timeout client 5m" string2="timeout server 5m" for((i=${spacelength};i>0;i--));do string1=" "${string1}; string2=" "${string2}; done; #将空格循环插入字符串前面 sed -i 's/listen rabbitmqs/rabbitmqs backup/g' beforeb sed -i "/listen/a\\$string1" beforeb sed -i "/listen/a\\$string2" beforeb sed -i 's/rabbitmqs backup/listen rabbitmqs/g' beforeb
相关文章推荐
- Linux busybox mount -a fstab
- linux下防DDOS攻击软件及使用方法详解
- CentOS 6.5系统服务详解( 转)
- linux中的一些小技巧
- linux软件包安装
- Linux2.6进程切换
- Linux多线程实践(六)使用Posix条件变量解决生产者消费者问题
- 在centos 7.0上利用yum一键安装mono
- Linux 内核剖析
- Linux 内核剖析
- Linux命令学习手册-iconv命令
- linux环境下gsoap调用过程中的超时设置
- 设置linux环境变量LANG
- linux, configure --prefix=/有什么用
- [linux]执行pip安装的程序:command not found
- Linux的lvm管理:修改LV大小
- 怎么在centos中查看某个目录的树结构?
- linux kernel module打印指定进程栈信息
- Linux创建crontab,定时将信息记录写入文件
- JavaMail邮件发送在linux环境下不能发送的问题解决