in reply to grep ip address from dhcpd.leases file
A lease record may not contain a client-hostname, so your file parsing should accommodate that. DB suggestions have been provided. Perhaps the following parsing option, which would read the file in lease-record 'chunks' (via local $/ = 'lease';), will be a helpful start:
use strict; use warnings; local $/ = 'lease'; while (<DATA>) { my ($ip) = /\s+(\S+)\s+/ or next; my $client = /client-hostname\s+(".+")/ ? $1 : ''; print "$ip,$client\n"; } __DATA__ lease 192.168.20.4 { starts 6 2009/06/27 00:40:00; ends 6 2009/06/27 12:40:00; hardware ethernet 00:00:00:00:00:00; uid 00:00:00:00:00:00; client-hostname "examle-workstation1"; } lease 192.168.20.5 { starts 6 2009/06/27 00:40:00; ends 6 2009/06/27 12:40:00; hardware ethernet 00:00:00:00:00:00; } lease 192.168.20.6 { starts 6 2009/06/27 00:40:00; ends 6 2009/06/27 12:40:00; hardware ethernet 00:00:00:00:00:01; uid 00:00:00:00:00:01; client-hostname "examle-workstation2"; } lease 192.168.20.7 { starts 6 2009/06/27 00:40:00; ends 6 2009/06/27 12:40:00; hardware ethernet 01:00:00:00:00:00; }
Output:
192.168.20.4,"examle-workstation1" 192.168.20.5, 192.168.20.6,"examle-workstation2" 192.168.20.7,
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re^2: grep ip address from dhcpd.leases file
by varalaxmibbnl (Acolyte) on Dec 15, 2013 at 07:40 UTC | |
by Kenosis (Priest) on Dec 15, 2013 at 17:22 UTC |