一个拆分haproxy serverlist的小脚本

公司对haproxy进行了配置的拆分,将每个backend的serverlist独立拆分成一个静态文件,对每个静态文件可以独立修改..

现有的haproxy.cfg配置文件数量很多且每个文件的内容也非常的多, 人工拆分太苦逼, 因此写过一个小脚本用来完成这项任务.

今天在浏览系统文件夹的时候, 将此程序最初的一个版本贴上...

#!/usr/bin/ruby
# 2014/05/24
# coding by kevin
hacfg=ARGV[0]
if ARGV.empty?
  puts ‘Please input haproxy.cfg parameter‘
  exit
end

if ! File.exists?(hacfg)
  puts ‘File not exists,please check‘
  exit
end
if ! File.directory?(‘backend.d‘)
  Dir::mkdir(‘backend.d‘)
end

file = File.readlines(hacfg).to_s
file.gsub!("\t"," ")
#解析backend
area = file.scan(/^(backend.*(\s+ [a-z ].*)+)/)

#对提取的backend解析serverlist
area.each do |i|
  i.pop
  n = i.to_s
  t = i.to_s
  conent = n.split("\n")
  name = conent[0].split(" ")

  #解析server条目写入到backend.d目录
  serverlist = n.scan(/\s?#?\s?server .*/)
  f = File.open("backend.d/#{name[1]}","w")

  if conent.to_s =~ /(\s+source\s+\d+\.\d+\.\d+\.\d+|\s+backup\Z|\s+id\s+\w+)/
    puts name
    puts " have key word...so next..."
    next
  end

  serverlist.each do |line|
    ip = line.scan(/(\d+\.\d+\.\d+\.\d+):/)
    port = line.scan(/\d+\.\d+\.\d+\.\d+\:(\d+)/)
    weight = line.scan(/weight\s+(\d+)/)
    maxconn = line.scan(/maxconn\s+(\d+)/)
    check_inter = line.scan(/check inter\s+(\d+)/)
    fall = line.scan(/fall\s+(\d+)/)
    source = line.scan(/source/)
    backup = line.scan(/backup/)
    if ip.empty? or ip.nil?
      puts "#{name[1]} serverlist发现有ip 获取为空,请检查"
      exit
    end
    if port.empty? or port.nil?
      puts "#{name[1]} serverlist发现有port 获取为空,请检查"
      exit
    end
    if weight.empty? or weight.nil?
      puts "#{name[1]} serverlist发现有weight 获取为空,请检查"
      exit
    end
    if maxconn.empty? or maxconn.nil?
      puts "#{name[1]} serverlist发现有maxconn 获取为空,请检查"
      exit
    end
    if check_inter.empty? or check_inter.nil?
      puts "#{name[1]} serverlist发现有check inter 获取为空,请检查"
      exit
    end
    if fall.empty? or fall.nil?
      puts "#{name[1]} serverlist发现有fall 获取为空,请检查"
      exit
    end
    if ! source.empty?
      puts " notice : have key words < source >"
    end
    if ! backup.empty?
      puts " notice : have key words < backup >"
    end
    if line !~ /\#/
      f.puts("#{ip},#{port},#{weight},#{maxconn},#{check_inter},#{fall}") 
    end

    if serverlist[0] ==line
      t.gsub!(/( )+#{line}/," option server_from_file\n server_file #{name[1]}")
    else
      t.gsub!(/#{line}/,‘kevin‘)
    end
  end

  f.close
  file.gsub!("#{n}","#{t}")
end
f = File.open("haproxy.cfg.aa","w")
f.puts(file)
f.close

a = File.readlines("haproxy.cfg.aa")
file = a.delete_if{|i| i =~ /kevin/ }

f = File.open("haproxy.cfg.aa","w")
f.puts(file)
f.close
时间: 2024-08-05 01:53:24

一个拆分haproxy serverlist的小脚本的相关文章

写了一个常规性生成merge 的小脚本

现在使用数据库来写存储过程,动不动参数就会用到xml ,当然罗,优势也很明显,参数相对固定,而且灵活,如果要修改或者什么的,中间接口层也不需要做变化,只需要修改封装的存储过程以及程序传参就ok了. 随着时间慢慢过,有时候就有一个存储过程,一个xml 来应对整个表的新增,修改,删除的情况了.而对于这个情况,我个人比较喜欢使用 Merge关键字来处理.但是如果表里面的列很多,那么复制黏贴啊之类的机械动作就会很多,而且没有什么价值.所以我就写了一个小脚本,应对了使用xml 来做表的增删改的作用 首先我

shell实现一个简单的计算器功能小脚本

废话不多说,直接上代码,基本实现加减乘除功能: #!/bin/bash # author by alsww # date : 2016.02.03 # mail : [email protected] # blog : alsww.blog.51cto.com print_info(){     printf "请输入数字:\n" } print_err_num(){     printf "请输入正确的数字!\n" } print_err_fuhao(){    

一个根据内存使用情况重启tomcat的小脚本

有一台服务器上部署了tomcat,随着时间的推移,内存消耗越来越大,所以写了一个小脚本配合crontab定时检测内存,不足的情况下重启tomcat. #!/bin/bash #tomcat restart:out of memory LOG=./restart_tomcat.log TOMCAT=/tomcat/bin/ TOMCATDIR=/tomcat echo"----------------------------" >> $LOG mem_total=$(free

一个计算的小脚本

[[email protected] cailu]# cat urfile 1 a2 b3 a1 d[[email protected] cailu]# awk '{a[$1]=a[$1]?a[$1]OFS$2:$2}END{for(i in a)print i,a[i]}' urfile 1 a d2 b3 a 一个计算的小脚本,布布扣,bubuko.com

写一个php小脚本辅助渗透测试

因为一个注入要爬行一些数据,然后写的一个小脚本,能写脚本来辅助渗透,也算是里程碑.哈哈哈 <?php $num = 1; while ($num <= 39) { $web_url = "http://www.xxx.com/shownews.asp?id=626%0AUNION%0ASELECT%0Atop%0A1%0A1,user_username,3,user_password,5,6%0Afrom%0A(select%0Atop%0A1%0Auser_username,use

用Python实现一个爬取XX大学电费通知的小脚本

内容简要 1分析网站 2简单爬取 3进阶自定义爬取 4保存进数据库 学校基础设施太差,宿舍电量过低提醒虽然贴在楼下,但是作为低头一族,经常忘记看提醒导致宿舍酣战时突然黑屏,为了避免这种尴尬的场景以及强化PY学习,我决定制作一个简单的爬虫. 首先我通过学校的微信公众号找到了一个十分隐蔽的查低电量提醒网站.它的界面是这样的: 手机适应的页面当然在电脑上会有一些崩=.=,但是不要介意,我们要的是功能.下面是查询到的界面 虽然看起来low而且经常不更新,但是它至少能用.于是我决定用它来制作低电量提醒查询

初步学习nodejs,业余用node写个一个自动创建目录和文件的小脚本,希望对需要的人有所帮助

初步学习nodejs,业余用node写个一个自动创建目录和文件的小脚本,希望对需要的人有所帮助,如果有bug或者更好的优化方案,也请批评与指正,谢谢,代码如下: 1 var fs = require('fs'); 2 var tel = [ 3 "1/2/4/6/a.tpl.html", 4 "1/2/4/7/9/c.tpl.html", 5 "1/3/5/8/b.tpl.html"]; 6 var demo = function (mulu)

一个批量修改AD信息的小脚本

今天接到一个任务,一个子公司100来个USER的账号,更换了新的电话号码,另顺便需要在AD里面体现出 各USER的职位. 好吧,100多个人,如果手动来改,量也很大,首先想到的是用脚本来修改,刚好想到了powershell. 首先,准备一个CSV文件,把USER按如下格式排练好,各值之间用逗号隔开,之后命名test.csv文件 samaccountname,telephonenumber,title user1,1234567,engineer user2,2345678,sales ...,.

分享一个刷网页PV的python小脚本

下面分享一个小脚本,用来刷网页PV. [[email protected] ~]# cat www.py #!/usr/bin/python# coding: UTF-8import webbrowser as webimport timeimport osimport randomdata = raw_input('请输入网址:')count = random.randint (3,5)j = 0while j <count: i = 0 while i <= 3: web.open_new