NSD Check for Doubles |
#!/usr/bin/env ruby # Copyright (c) 2006 Konstantin Saurbier # All rights reserved. # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # 1. Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # 2. Redistributions in binary form must reproduce the above copyright # notice, this list of conditions and the following disclaimer in the # documentation and/or other materials provided with the distribution. # 3. The name of the author may not be used to endorse or promote products # derived from this software without specific prior written permission. # # THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR # IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES # OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. # IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, # INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, # BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; # LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED # AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, # OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY # OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF # SUCH DAMAGE. if(!ARGV[0]) puts "Usage:" puts " #{$0} zone-file" exit end ## Initialize variables # Open file, given as first argument file = ARGV[0] # output buffers found ips output = Hash.new() # Read and process every line of the zone-file f = File.new(file, "r") f.each_line do |line| # Ignore comments if(line =~ /^\w/) # Find lines with IP addresses if(line =~ /\d+\.\d+\.\d+\.\d+/) # Add IP to Hash or increment value if(output.has_key?($&)) output[$&] += 1 else output[$&] = 1 end end end end f.close # Process output buffer, print all elements with value # > 1 (IP appears more than once in zone). output.each do |key, num| if(num > 1) puts key+": "+num.to_s end end #EOF
Letzte Aktualisierung: 2013-07-28 08:15:10 CEST