一个拆分haproxyserverlist的小脚本-创新互联
公司对haproxy进行了配置的拆分,将每个backend的serverlist独立拆分成一个静态文件,对每个静态文件可以独立修改..
10年积累的成都网站制作、成都网站设计经验,可以快速应对客户对网站的新想法和需求。提供各种问题对应的解决方案。让选择我们的客户得到更好、更有力的网络服务。我虽然不认识你,你也不认识我。但先网站设计后付款的网站建设流程,更有吉水免费网站建设让你可以放心的选择与我们合作。现有的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
创新互联www.cdcxhl.cn,专业提供香港、美国云服务器,动态BGP最优骨干路由自动选择,持续稳定高效的网络助力业务部署。公司持有工信部办法的idc、isp许可证, 机房独有T级流量清洗系统配攻击溯源,准确进行流量调度,确保服务器高可用性。佳节活动现已开启,新人活动云服务器买多久送多久。
当前标题:一个拆分haproxyserverlist的小脚本-创新互联
新闻来源:http://ybzwz.com/article/ecdhi.html