Skip to content

Instantly share code, notes, and snippets.

@rohoog
Last active August 10, 2021 15:32
Show Gist options
  • Save rohoog/b7c16ce8fde300d13776b3a25e152449 to your computer and use it in GitHub Desktop.
Save rohoog/b7c16ce8fde300d13776b3a25e152449 to your computer and use it in GitHub Desktop.
Transform ISC leases to dnsmasq file format.
#! /bin/awk -f
/^lease.*{/{
lease = $2
next
}
lease != "" {
sub(/;$/,"")
if (/^}/) {
if (lease_["binding_state"] == "active") {
cmd="date -u -d \"" gensub(/^[0-9]+/,"",1,lease_["ends"]) "\" +%s"
cmd | getline end
close(cmd)
if ("client-hostname" in lease_) {
cmd="echo " lease_["client-hostname"]
cmd | getline name
close(cmd)
} else {
name = "*"
}
if ("uid" in lease_) {
cmd="echo $(printf '%b' " lease_["uid"] " | od -t x1 -A none) | tr \" \" :"
cmd | getline uid
close(cmd)
} else {
uid = "*"
}
printf("%d %s %s %s %s\n",end,lease_["hardware_ethernet"],lease,name,uid)
}
lease = ""
delete lease_
} else {
i=1
k = $i
while ($i == "next" || $i == "binding" || $i == "hardware") {
k = k "_" $(++i)
}
lease_[k] = $(++i)
for (i++; i<=NF; i++) {
lease_[k] = lease_[k] " " $i
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment