From b109bf3d3418001c2b38dc7ac8dde6b3a4fc684e Mon Sep 17 00:00:00 2001 From: davidplunkett Date: Wed, 6 Feb 2019 23:05:35 +0000 Subject: [PATCH] add local subnet to dhcp.conf Change-Id: I37ab850c5ecb5c629e5424e18006024bea55ef5e Signed-off-by: davidplunkett --- install_server_os.sh | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/install_server_os.sh b/install_server_os.sh index 9e687cf..7f723b6 100755 --- a/install_server_os.sh +++ b/install_server_os.sh @@ -89,7 +89,7 @@ if [ -n "$RCFILE" ] && [ -f "$RCFILE" ]; then fi # CHECK A FEW REQUIRED VARIABLES - BUT NOT ALL -CHECKLIST="SRV_NAME SRV_OOB_IP SRV_OOB_USR SRV_OOB_PWD SRV_IPXE_INF BUILD_WEBPORT" +CHECKLIST="SRV_NAME SRV_OOB_IP SRV_SUBNET SRV_OOB_USR SRV_OOB_PWD SRV_IPXE_INF BUILD_WEBPORT" for VAR in $CHECKLIST; do if [ -z "${!VAR}" ] ; then echo "ERROR: Invalid or missing variable [$VAR] = [${!VAR}] in rcfile [$RCFILE]" @@ -253,6 +253,22 @@ subnet $SRV_SUBNET netmask $SRV_NETMASK { } EOF +LOCAL_INF=$(ip route get $SRV_IP | grep "$SRV_IP" | cut -f 5 -d ' ') +LOCAL_SUBNET=$(route -n | grep " U " | grep "$LOCAL_INF" | awk '{print $1}') +LOCAL_NETMASK=$(route -n | grep " U " | grep "$LOCAL_INF" | awk '{print $3}') +echo "Local interface to access $SRV_IP is [$LOCAL_INF] with subnet/mask [$LOCAL_SUBNET/$LOCAL_NETMASK]" + +if [ "$SRV_SUBNET" != "$LOCAL_NET" ]; then + echo "Updating dhcp configuration [$DHCP_ROOT/dhcpd.conf] with local subnet [$LOCAL_SUBNET]" + perl -i -p0e "s/^subnet $LOCAL_SUBNET .*?\n\}\n//gms" $DHCP_ROOT/dhcpd.conf + cat >>$DHCP_ROOT/dhcpd.conf <