PageRenderTime 57ms CodeModel.GetById 26ms RepoModel.GetById 0ms app.codeStats 0ms

/check_ipv6_autoconf_disabled

https://github.com/hggh/nagios-ipv6
Ruby | 44 lines | 36 code | 6 blank | 2 comment | 9 complexity | 9c5b305345afeab96c15f639374060d8 MD5 | raw file
  1. #!/usr/bin/env ruby
  2. INTERFACES_BLACKLIST = [ 'tun0', 'tun1', 'tun2' ]
  3. # Jonas Genannt <jonas@brachium-system.net>
  4. def check_ipv6_autoconf(interface_directory)
  5. accept_ra = File.read(File.join(interface_directory, "accept_ra")).chomp
  6. autoconf = File.read(File.join(interface_directory, "autoconf")).chomp
  7. if accept_ra == "0" and autoconf == "0"
  8. return true
  9. end
  10. false
  11. end
  12. interfaces = Hash.new
  13. interfaces[:blacklisted] = Array.new
  14. interfaces[:ok] = Array.new
  15. interfaces[:critical] = Array.new
  16. Dir.glob("/proc/sys/net/ipv6/conf/*").each do |dir|
  17. interface_name = File.basename(dir)
  18. next if interface_name =~ /\A(default|all|lo)\Z/
  19. if INTERFACES_BLACKLIST.include?(interface_name)
  20. interfaces[:blacklisted] << interface_name
  21. next
  22. end
  23. if check_ipv6_autoconf(dir) == true
  24. interfaces[:ok] << interface_name
  25. else
  26. interfaces[:critical] << interface_name
  27. end
  28. end
  29. output_backlisted = ""
  30. if interfaces[:blacklisted].count > 0
  31. output_backlisted = "Int blacklisted: " + interfaces[:blacklisted].join(' ')
  32. end
  33. if interfaces[:critical].count > 0
  34. puts "CRITICAL: Int IPv6 autoconf enabled: #{interfaces[:critical].join(' ')} Int IPv6 autoconf disabled: #{interfaces[:ok].join(' ')} (#{interfaces[:ok].count}) " + output_backlisted
  35. exit 2
  36. else
  37. puts "OK: Int IPv6 autoconf disabled: #{interfaces[:ok].join(' ')} (#{interfaces[:ok].count}) " + output_backlisted
  38. end