/usr/sbin/fai-new-mac is in fai-server 5.0.3ubuntu1.
This file is owned by root:root, with mode 0o755.
The actual contents of the file can be viewed below.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 | #! /usr/bin/perl
# print only new MAC addresses, which are not yet known
# (c) Thomas Lange, 2007-2012
# fai-new-mac -tad
# tcpdump -pnlqte udp and src port bootpc and broadcast | fai-new-mac
# -a add arp entries to list of known MAC addresses
# -d add dhcpd entries to list of known MAC addresses
# -t read from tcpdump. If not given, read from stdin
# -p <pattern> only print MACs matching the pattern
use strict;
use Getopt::Std;
my $filename="/var/lib/fai/known-mac-addresses";
my $dhcpdconf="/etc/dhcp/dhcpd.conf";
my %mac;
$|=1;
our($opt_a,$opt_d,$opt_p,$opt_t,$opt_i);
sub read_known_macs {
  -f $filename || return;
  open (IN,"$filename") or die "Can't read file with known MAC addresses\n";
  while (<IN>) {
    chomp;
    $mac{$_}=1;
  }
  close IN;
}
sub read_arp {
  open (ARP,"arp -an|") || die "Can't read arp list. $!\n";
  while (<ARP>) {
    append_new_mac($1,"MAC found in ARP list") if /at (([0-9a-f]{1,2}:){5}[0-9a-f]{1,2}) \[ether\] on /i
  }
  close ARP;
}
sub read_dhcpd {
  -f $dhcpdconf || return;
  open(DHCP,"$dhcpdconf") || die "Can't read $dhcpdconf. $!\n";
  while (<DHCP>) {
     append_new_mac($1,"mac found in dhcpd.conf") if /hardware ethernet\s+(([0-9a-f]{1,2}:){5}[0-9a-f]{1,2})/i;
  }
  close DHCP;
}
sub append_new_mac {
  my ($newmac,$msg) = @_;
  return if defined $mac{$newmac};
  $mac{$newmac}=1;
  if ($opt_p) {
    print "$msg $newmac\n" if $newmac =~ /$opt_p/i;
  } else {
    print "$msg $newmac\n";
  }
  open (OUT,">>$filename") or die "Can't append to file with old MAC addresses\n";
  print OUT "$newmac\n";
  close OUT;
}
sub read_from_tcpdump {
  my $newmac;
  if ($opt_t) {
    open (TCPDUMP,"tcpdump $opt_i -pnlqte udp and src port bootpc and broadcast|") || die "Can't read from tcpdump. $!\n";
  } else {
    open (TCPDUMP,"-") || die "$!\n";
  }
  while (<TCPDUMP>) {
    next if /^tcpdump:/;
    next if /^listening /;
    $newmac=(split)[0];
    append_new_mac($newmac,"NEW");
  }
  close TCPDUMP;
}
sub usage {exit;}
getopts('atdp:i:') || usage();
$opt_i and $opt_i="-i $opt_i";
read_known_macs();
$opt_d && read_dhcpd();
$opt_a && read_arp();
read_from_tcpdump();
 |