#!/usr/bin/perl use strict; my $hcitool="/usr/bin/hcitool"; my $logfile = "blue-trace.log"; while(1) { my ($addr,$host) = ""; open(HCI,"$hcitool scan|") or die "$!\n"; while() { for(split(/\s/,$_)) { next if $_ =~ /Scanning/; if($_ =~ /\w\w\:\w\w\:\w\w\:\w\w\:\w\w\:\w\w/) { $addr = $_; } elsif($_ =~ /\w+$/) { $host = $_; } } } if($addr ne "") { my ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time); $hour = "0" . $hour if $hour < 10; $min = "0" . $min if $min < 10; $mday = "0" . $mday if $mday < 10; $mon++; $mon = "0" . $mon if $mon < 10; $year += 1900; print "[$mday.$mon.$year - $hour:$min] $addr $host passed\n"; open(LOG,"<$logfile") or print "Cannot read from $logfile!\n$!\n"; while() { my ($timestamp,$btaddr,$bthost) = split(/\s/,$_); print "$_\n" if($btaddr eq $addr); } close(LOG); open(LOG,">>$logfile") or print "Cannot write to $logfile!\n$!\n"; print LOG "[$mday.$mon.$year - $hour:$min:$sec] $addr $host\n"; close LOG; } close(HCI); }