79 lines
1.9 KiB
Bash
Executable File
79 lines
1.9 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
# Jack-Benny Persson
|
|
# LX13
|
|
# Exercise 2, lab 7 (Write script to create a dhcpd.conf)
|
|
|
|
# Set some variables
|
|
File="$HOME/dhcpd.conf"
|
|
|
|
# Binaries
|
|
Awk="/usr/bin/awk"
|
|
Dialog="/usr/bin/dialog"
|
|
Printf="/usr/bin/printf"
|
|
|
|
# Sanity checks
|
|
if [ ! -w `dirname $File` ]; then
|
|
echo "Can't write to `dirname $File`"
|
|
exit 1
|
|
fi
|
|
|
|
for Bin in $Awk $Dialog $Printf; do
|
|
if [ ! -x $Bin ]; then
|
|
echo "Can't execute $Bin"
|
|
exit 1
|
|
fi
|
|
done
|
|
|
|
# Functions
|
|
question()
|
|
{
|
|
$Dialog --backtitle "Interactive DHCPD config generator" \
|
|
--inputbox "$1" 10 60 2> /tmp/dhcpd_question
|
|
if [ $? -ne 0 ]; then # Check if user hit ESC
|
|
echo "Aborting interactive DHCPD config generator"
|
|
exit 1
|
|
fi
|
|
Input=`cat /tmp/dhcpd_question`
|
|
}
|
|
|
|
# Ask all the questions
|
|
question "Enter subnet and netmask, separate with a single whitespace"
|
|
Subnet=$Input
|
|
|
|
question "Enter IP range, seperate start and end with a single whitespace"
|
|
Range=$Input
|
|
|
|
question "Enter your network DNS servers, multiple servers can be entered"
|
|
Nameservers=$Input
|
|
|
|
question "Enter your default routers"
|
|
Router=$Input
|
|
|
|
$Dialog --backtitle "Interactive DHCPD config generator" \
|
|
--menu "Choose DDNS update style" 10 60 3 \
|
|
none "None" ad-hoc "Ad-Hoc" interim "Interim" 2> /tmp/dhcpd_question
|
|
Input=`cat /tmp/dhcpd_question`
|
|
Style=$Input
|
|
|
|
question "Enter default lease time in seconds"
|
|
DefaultLease=$Input
|
|
|
|
question "Enter max lease time in seconds"
|
|
MaxLease=$Input
|
|
|
|
# Generate dhcpd.conf
|
|
Sub=`echo $Subnet | $Awk '{ print $1 }'`
|
|
Netmask=`echo $Subnet | $Awk '{ print $2 }'`
|
|
$Printf "subnet $Sub netmask $Netmask {\n" > $File
|
|
$Printf "range ${Range};\n" >> $File
|
|
$Printf "option domain-name-servers ${Nameservers};\n" >> $File
|
|
$Printf "option routers ${Router};\n" >> $File
|
|
$Printf "ddns-update-style ${Style};\n" >> $File
|
|
$Printf "default-lease-time ${DefaultLease};\n" >> $File
|
|
$Printf "max-lease-time ${MaxLease};\n" >> $File
|
|
$Printf "}\n" >> $File
|
|
|
|
exit 0
|
|
|