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 %>