Как я могу сделать привязки DNSMASQ в удобочитаемом формате?

Я хочу настроить псевдоним или скрипт, который позволит мне показать привязки DHCP, которые имеет dnsmasq.

$ cat /var/lib/misc/dnsmasq.leases
1411349054 08:11:96:e9:52:ec 192.168.1.96 W11837894 *

1411413528 b4:b6:76:0c:c9:4d 192.168.1.46 root-HP-9470m *

1411263016 00:1b:21:0e:f2:bd 192.168.1.219 root-Dell-DM061 *

1411357237 00:01:2e:4d:49:bd 192.168.1.31 ata *

1411263041 00:30:67:d2:25:65 192.168.1.51 root-TA75M *

Я могу взять 1-й столбец и сделать дату -d @ 1411349054 (или awk '{print $1}' /var/lib/misc/dnsmasq.leases | awk '{ print strftime("%c")}')

Sun Sep 21 20:24:14 CDT 2014

Я ищу способ в awk для форматирования например:

Sun Sep 21 20:24:14 CDT 2014 08:11:96:e9:52:ec 192.168.1.96 W11837894 *

Mon Sep 22 14:18:48 CDT 2014 b4:b6:76:0c:c9:4d 192.168.1.46 root-HP-9470m *

У кого-нибудь есть идеи?

1
задан 24 August 2014 в 05:52

1 ответ

Эта команда awk должна выполнить трюк,

awk '{if ($1) {$1=strftime("%c",$1); print}}' /var/lib/misc/dnsmasq.leases

Старая версия, которая выведет эпоху Unix на пустые строки:

awk '{time=$1; $1=""; print strftime("%c",time) $0}' /var/lib/misc/dnsmasq.leases

Трюк заключается в применении strftime только к соответствующему аргументу и распечатать все остальное как есть. Я взял этот бит из этого вопроса. (Так как ваша функция strftime работала правильно, я предполагаю, что у вас установлен gawk. Если нет, сделайте sudo apt-get install gawk.)

0
ответ дан 24 May 2018 в 04:21
  • 1
    @AvinashRaj Я обновил ответ. – muru 24 August 2014 в 06:39
  • 2
    @AvinashRaj Или awk '$1{ $1=strftime("%c", $1);}1' file (но это выглядит довольно близко к тарабарщине). :) Спасибо, это немало вещей, которые я узнал о awk от вас сегодня. – muru 24 August 2014 в 06:44

Другие вопросы по тегам:

Похожие вопросы: