From 2c773277701523ce9c4561e2dca1625be4ab156c Mon Sep 17 00:00:00 2001
From: David Beniamine <david.beniamine@tetras-libre.fr>
Date: Fri, 5 Jun 2020 17:31:46 +0200
Subject: [PATCH] Fix #22

---
 clear_dhcp.sh                   | 24 ++++++++++++++++++++++++
 registry/scripts/upgrade_all.sh |  2 +-
 2 files changed, 25 insertions(+), 1 deletion(-)
 create mode 100644 clear_dhcp.sh

diff --git a/clear_dhcp.sh b/clear_dhcp.sh
new file mode 100644
index 0000000..0c9aa6c
--- /dev/null
+++ b/clear_dhcp.sh
@@ -0,0 +1,24 @@
+#!/bin/bash
+
+if [ -z "$2" ] || [ "$1" != 'Name' ] && [ "$1" != 'MAC' ]
+then
+    echo "Usage:"
+    echo "\t $0 MAC aa:bb:cc:dd:ee:ff"
+    echo "Or"
+    echo "\t $0 Name hostname"
+    exit 1
+fi
+
+lease_file="/var/lib/dhcp/dhcpd.leases"
+cp $lease_file $lease_file.$(date "+%Y%m%d-%H%M%S")
+
+if [ "$1" == 'MAC' ]
+then
+    MAC=$2
+    awk -v MAC="$MAC" 'BEGIN{IN=0;ACCU=""} /^lease/{print ACCU;ACCU="";IN=1;do_print=1} /hardware ethernet/{if($3==MAC";"){do_print=0}} {ACCU=ACCU"\n"$0} /^}$/{if(do_print==1){print ACCU};IN=0;do_print=0;ACCU=""}' $lease_file > /tmp/$$
+else
+    HOST="\"$2\""
+    awk -v HOST="$HOST" 'BEGIN{IN=0;ACCU=""} /^lease/{print ACCU;ACCU="";IN=1;do_print=1} /client-hostname/{if($2==HOST";"){do_print=0}} {ACCU=ACCU"\n"$0} /^}$/{if(do_print==1){print ACCU};IN=0;do_print=0;ACCU=""}' $lease_file > /tmp/$$
+fi
+sed '/^$/d' /tmp/$$ > $lease_file
+systemctl restart isc-dhcp-server
diff --git a/registry/scripts/upgrade_all.sh b/registry/scripts/upgrade_all.sh
index 7e2dd37..29d9975 100755
--- a/registry/scripts/upgrade_all.sh
+++ b/registry/scripts/upgrade_all.sh
@@ -150,7 +150,7 @@ do
     log "===== Begin host $name ($mac - $ip) ===="
     cat $f >> $mainlog
     log "===== End host $name ===="
-    if [ $(wc -l $f | awk '{print $1}') -gt 0 ]
+    if [ $(wc -l $f | awk '{print $1}') -lt 0 ]
     then
         DOWNS[$mac]=$name
     fi
-- 
GitLab