90 lines
2.1 KiB
Bash
Executable File
90 lines
2.1 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"
|
|
Zenity="/usr/bin/zenity"
|
|
Printf="/usr/bin/printf"
|
|
Rm="/bin/rm"
|
|
|
|
# Sanity checks
|
|
if [ ! -w `dirname $File` ]; then
|
|
echo "Can't write to `dirname $File`"
|
|
exit 1
|
|
fi
|
|
|
|
if [ ! -w /tmp/ ]; then
|
|
echo "Can't write to /tmp/"
|
|
exit 1
|
|
fi
|
|
|
|
for bin in $Awk $Zenity $Printf $Rm; do
|
|
if [ ! -x $Bin ]; then
|
|
echo "Can't execute $Bin"
|
|
exit 1
|
|
fi
|
|
done
|
|
|
|
# Functions
|
|
question_form()
|
|
{
|
|
$Zenity --text "Interactive DHCPD config generator" \
|
|
--forms --add-entry="Subnet" --add-entry="Netmask" \
|
|
--add-entry="Range (Separate with whitespace)" \
|
|
--add-entry="Nameserver (Separate with whitespaces)" \
|
|
--add-entry="Routers (Separate with whitespaces)" \
|
|
--add-entry="DDNS-update-style (none/interim/ad-hoc)" \
|
|
--add-entry="Default lease time in seconds" \
|
|
--add-entry="Max leaste time in seconds" \
|
|
> /tmp/dhcpd_question
|
|
if [ $? -ne 0 ]; then # Check if user hit cancel
|
|
$Zenity --error \
|
|
--text="Aborting interactive DHCPD config generator"
|
|
exit 1
|
|
fi
|
|
Input=`cat /tmp/dhcpd_question`
|
|
}
|
|
|
|
|
|
extract_data()
|
|
{
|
|
Sub=`echo $Input | awk -F "|" '{ print $1 }'`
|
|
Netmask=`echo $Input | awk -F "|" '{ print $2 }'`
|
|
Range=`echo $Input | awk -F "|" '{ print $3 }'`
|
|
Nameservers=`echo $Input | awk -F "|" '{ print $4 }'`
|
|
Router=`echo $Input | awk -F "|" '{ print $5 }'`
|
|
Style=`echo $Input | awk -F "|" '{ print $6}'`
|
|
DefaultLeas=`echo $Input | awk -F "|" '{ print $7 }'`
|
|
MaxLease=`echo $Input | awk -F "|" '{ print $8 }'`
|
|
}
|
|
|
|
# Main
|
|
|
|
# Display the question form
|
|
question_form
|
|
|
|
# Extract all the data from the question form
|
|
extract_data
|
|
|
|
# Generate dhcpd.conf
|
|
$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
|
|
|
|
# Clean up
|
|
$Rm /tmp/dhcpd_question
|
|
|
|
exit 0
|
|
|