Exercise 2, lab 7 (zenity) done

This commit is contained in:
Jack-Benny Persson 2013-12-26 12:12:06 +01:00
parent 5b2b8cb6ed
commit dbd17b6bc0

89
Labb7/ovning2_zenity.sh Executable file
View File

@ -0,0 +1,89 @@
#!/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 2
fi
if [ ! -w /tmp/ ]; then
echo "Can't write to /tmp/"
exit 2
fi
for bin in $Awk $Zenity $Printf $Rm; do
if [ ! -x $Bin ]; then
echo "Can't execute $Bin"
exit 2
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