#!/usr/local/bin/ruby a = Array.new out = IO.popen('tcpdump -n -i eth1 -X tcp port 80') #print http packet contents until out.eof? do #Wrap up each packet into an array in an array line = out.readline if line.match(/.{3}\x3a/) then #Matches the timestamp beginning a packet a.push(Array.new) a.last.push(line) else a.last.push(line) end a.shift if a.length > 300 #Keep the array of arrays from getting too big a.each { |packet| puts packet.flatten if packet.inspect.include?("GET") && \ packet.inspect.match(/192\.168\.[0-9]+\.[0-9]+\.http/) } #match GET requests to internal server end