diff --git a/app/controllers/macs_controller.rb b/app/controllers/macs_controller.rb index 887dfd6..8095a63 100755 --- a/app/controllers/macs_controller.rb +++ b/app/controllers/macs_controller.rb @@ -292,18 +292,22 @@ Rails.logger.info "starting scan..." Rails.logger.info "Running [#{command}]" end IO.popen(command) { |stdin| - Rails.logger.info "Reading stdin: "+stdin.inspect - stdin.each { |line| + result = stdin.read() + result.lines.each { |line| + Rails.logger.info "Reading stdin: "+line.inspect next if line !~ /^([\d\.]+)\s+([[:xdigit:]:]+)\s/; macs[($2).downcase] = ($1).downcase; } + Rails.logger.info "STDIN:"+result.lines.count.inspect + @macs = macs.dup # make a copy for output in the view + Rails.logger.info "MACS:"+@macs.inspect } # Scan the existing macs and update each record as necessary Mac.find(:all).each { |entry| mac = entry.mac.downcase ip = entry.ip - if macs.has_key?(mac) + if macs.has_key?(mac) # if our scan shows this mac if ! entry.active || ! entry.since Rails.logger.info "Activating #{mac} at #{ip}" if options[:verbose] entry.since = Time.now diff --git a/app/views/macs/scan.html.erb b/app/views/macs/scan.html.erb index 74934ca..fd18ca5 100755 --- a/app/views/macs/scan.html.erb +++ b/app/views/macs/scan.html.erb @@ -1,7 +1,7 @@ Scanning... <% if can? :read_details, Mac - @log.each do |log| %> - <%= log.mac %> = - <%= log.ip %>
+ @macs.each do |key, value| %> + <%= key %> = + <%= value %>
<% end end %>