From 3f7f59ff522bf322383f1bebaa18a979608804f7 Mon Sep 17 00:00:00 2001 From: Eric Wong Date: Thu, 1 Jul 2010 19:25:57 -0700 Subject: examples/linux-tcp-listener-stats: warn on possibly invalid addresses It is a likely mistake to specify a local address such as "127.0.0.1:#{port}" as an argument to linux-tcp-listener-stats when our listener is listening on all addresses ("0.0.0.0:#{port}"). So make an effort to detect this mistake as all of our known users on our mailing list seem to make it: http://mid.gmane.org/AANLkTinP5fBfcRa6Y3-MrMzDqjRRrgEOIunvn_h7q2WS@mail.gmail.com --- examples/linux-tcp-listener-stats.rb | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) (limited to 'examples') diff --git a/examples/linux-tcp-listener-stats.rb b/examples/linux-tcp-listener-stats.rb index fb4489d..6497ca1 100755 --- a/examples/linux-tcp-listener-stats.rb +++ b/examples/linux-tcp-listener-stats.rb @@ -5,6 +5,7 @@ require 'raindrops' require 'optparse' +require 'ipaddr' usage = "Usage: #$0 [-d delay] ADDR..." ARGV.size > 0 or abort usage delay = false @@ -19,6 +20,21 @@ opts = OptionParser.new('', 24, ' ') do |opts| opts.parse! ARGV end +ARGV.each do |addr| + addr =~ %r{\A(127\..+):(\d+)\z} or next + host, port = $1, $2 + hex_port = '%X' % port.to_i + ip_addr = IPAddr.new(host) + hex_host = ip_addr.hton.each_byte.inject('') { |s,o| s << '%02X' % o } + socks = File.readlines('/proc/net/tcp') + hex_addr = "#{hex_host}:#{hex_port}" + if socks.grep(/^\s+\d+:\s+#{hex_addr}\s+/).empty? && + ! socks.grep(/^\s+\d+:\s+00000000:#{hex_port}\s+/).empty? + warn "W: #{host}:#{port} (#{hex_addr}) not found in /proc/net/tcp" + warn "W: Did you mean 0.0.0.0:#{port}?" + end +end + fmt = "% 19s % 10u % 10u\n" printf fmt.tr('u','s'), *%w(address active queued) -- cgit v1.2.3-24-ge0c7