#!/bin/bash # # Script: installer.sh # # Project: AWLP - Alptekin's Wireless Linux Project # http://awlp.sourceforge.net/ # # Version: 1.2 # # Author: Alptekin Cakircali # http://www.cakircali.com/alptekin # (alptekin@cakircali.com) # # Date: August 24, 2005 # # Purpose: This script is part of AWLP. This is the installation script. # It compiles and installs hostap-driver and hostap-utilities and # installs all AWLP files, set their permissions and configure them. # It also does clean-up and trim-down of unnecessary files to save # storage space after installing AWLP. # # Modification History: # v1.2 - August 24, 2005: o Added Captive Portal - NoCatAuth v0.82 # o Included 'links' Slackware package in tag files # # v1.1 - August 15, 2005: o Updated for the latest versions of Slackware 10.1 # o Incorporated latest releases of hostap-driver (v0.3.9), # hostap-utils (v0.3.7) and bridge-utils (v1.0.6) # o Updated IEEE Organizationally Unique Identifier # file (oui_filtered.txt) content # # v1.0 - December 20, 2004: o Initial code release # # # # Copyright and License: # ---------------------- # # Copyright (c) 2005 Alptekin Cakircali # Released under the GNU GPL - see http://www.gnu.org/copyleft/gpl.html # # This file is part of AWLP. # # AWLP is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # AWLP is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with AWLP; if not, write to the Free Software # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # # # WARNING!!! # # This installation script does not contain user configurable options. # Make sure you read the 'Installation', 'Operation Manual' and 'FAQ' # sections of README file if something goes wrong. Despite these warnings, # if you want to change stuff, you are on your own. # # # File list # # ./installer.sh # ./COPYING # ./README # # ./configfiles/dhcpd.conf # ./configfiles/httpd.conf # ./configfiles/localhost.zone # ./configfiles/named.ca # ./configfiles/named.conf # ./configfiles/named.local # ./configfiles/nocat.conf # ./configfiles/ntp.conf # ./configfiles/oui_filtered.txt # ./configfiles/rc.dhcpd # ./configfiles/rc.local # ./configfiles/rc.ntpd # ./configfiles/rc.wlan0 # ./configfiles/rc.wlan0-pre # ./configfiles/.htaccess # # ./corescripts/engines1.pl # ./corescripts/engines2.pl # ./corescripts/error_messages.pl # ./corescripts/extras.pl # ./corescripts/global_configuration.pl # ./corescripts/index.html # ./corescripts/index.pl # ./corescripts/radar.pl # ./corescripts/splash.html # ./corescripts/status.html # # ./images/LinuxPowered.gif # # ./tagfiles/a/tagfile # ./tagfiles/ap/tagfile # ./tagfiles/d/tagfile # ./tagfiles/e/tagfile # ./tagfiles/f/tagfile # ./tagfiles/k/tagfile # ./tagfiles/l/tagfile # ./tagfiles/n/tagfile # ./tagfiles/t/tagfile # ./tagfiles/tcl/tagfile # ./tagfiles/x/tagfile # ./tagfiles/xap/tagfile # ./tagfiles/y/tagfile # # ./tarballs/hostap-driver-0.3.9.tar.gz # ./tarballs/hostap-utils-0.3.7.tar.gz # ./tarballs/bridge-utils-1.0.6.tar.gz # ./tarballs/NoCatAuth-0.82.tar.gz # # # Defining the project name, relative paths, versions, etc. # PROJECTNAME="AWLP" PROJECTRELATIVEPATH="awlp" PROJECTVERSION="1.2" AUTHENTICATIONUsername="admin" AUTHENTICATIONPassword="awlp" HOSTAPDRIVER_VERSION="0.3.9" HOSTAPUTILS_VERSION="0.3.7" BRIDGEUTILS_VERSION="1.0.6" NOCATAUTH_VERSION="0.82" # # Defining Required Slackware Packages # REQUIRED_SLACKWARE_PACKAGES=( aaa_base aaa_elflibs apache autoconf autofs automake bash bin bin86 bind binutils bzip2 ccache coreutils dcron devs dhcp dhcpcd dnsmasq e2fsprogs elvis etc findutils floppy gawk gcc getty-ps glib glib2 glibc glibc-i18n glibc-profile glibc-solibs glibc-zoneinfo gnet gnupg grep gzip hdparm hotplug inetd iproute2 iptables kernel-headers kernel-ide kernel-modules kernel-source libtermcap libtool lilo m4 make mhash minicom mkinitrd mod_ssl module-init-tools nasm ntp openssh openssl openssl-solibs pciutils pcmcia-cs pcre perl pine pkgconfig pkgtools popt procps readline sed shadow slocate startup-notification sudo sysklogd syslinux sysvinit tar tcpdump tcpip util-linux wget wireless-tools zlib ) # # Defining Required Program Paths # REQUIRED_PROGRAM_PATHS=( /usr/sbin/dhcpd /sbin/iwpriv /sbin/iwconfig /sbin/ifconfig /bin/ps /sbin/halt /usr/bin/htpasswd /sbin/cardctl /usr/sbin/iptables /sbin/modprobe ) # # Defining Packages to Remove # PACKAGES_TOBE_REMOVED=( autoconf automake ccache gcc glib glib2 glibc glibc-profile glibc-i18n kernel-headers kernel-source libtool m4 make nasm ) # # Output the project name and version # echo echo "-------------------------------------" echo "Installing ..." echo echo "${PROJECTNAME} v${PROJECTVERSION}" echo "http://awlp.sourceforge.net/" echo echo "Author: Alptekin Cakircali" echo " http://www.cakircali.com/alptekin" echo " alptekin@cakircali.com" echo echo "Copyright (c) 2005, Alptekin Cakircali" echo "Released under GNU GPL" echo "--------------------------------------" echo sleep 1 # # Mark the time for the elapsed time calculation # ElapsedTimeBegin=`date +%s` # # Fetching the Install Directory # InstallDirectory=`pwd` # # Check if the user is running this script as root, if not abort execution # CurrentUser=`whoami` if [ "${CurrentUser}" != "root" ] then echo echo "------------" echo "FATAL ERROR:" echo "------------" echo "You must run this script \"${0}\" as root." echo "Execution aborted." echo exit fi # # Check if /var/log/packages is accessible # echo echo -n "- Checking /var/log/packages ... " sleep 1 if [ -d "/var/log/packages" -a -r "/var/log/packages" -a -x "/var/log/packages" ] then echo " Looks good" echo else echo echo echo "------------" echo "FATAL ERROR:" echo "------------" echo "Problem accessing /var/log/packages directory. Execution aborted." echo "Make sure this is a custom Slackware 10.1 install with the tagfiles" echo "provided as described in the 'Installation' section of README file." echo exit fi # # Check if the required packages are installed # echo echo -n "- Checking if the required packages are installed ... " sleep 1 cd /var/log/packages MissingPackages="" for ThePackage in "${REQUIRED_SLACKWARE_PACKAGES[@]}" do PackageCheck=`ls ${ThePackage}* 2>/dev/null`; if [ -z "${PackageCheck}" ] then if [ -z "${MissingPackages}" ] then MissingPackages="${ThePackage}" else MissingPackages="${MissingPackages} ${ThePackage}" fi fi done cd ${InstallDirectory} if [ -z "${MissingPackages}" ] then echo " Looks good" echo else echo echo echo "------------" echo "FATAL ERROR:" echo "------------" echo "Execution aborted. The following Slackware packages were not found." echo "Make sure this is a custom Slackware 10.1 install with the tagfiles" echo "provided as described in the 'Installation' section of README file." echo echo "${MissingPackages}" echo exit fi # # Checking the required program paths # echo echo -n "- Checking if the required program paths exists ... " MissingProgramPaths="" for ThePath in "${REQUIRED_PROGRAM_PATHS[@]}" do ProgramPathCheck=`ls ${ThePath}` if [ -z "${ProgramPathCheck}" ] then if [ -z "${MissingProgramPaths}" ] then MissingProgramPaths="${ThePath}" else MissingProgramPaths="${MissingProgramPaths}, ${ThePath}" fi fi done if [ -z "${MissingProgramPaths}" ] then echo " Looks good" echo else echo echo echo "------------" echo "FATAL ERROR:" echo "------------" echo "Execution aborted. The following program paths were not found." echo "Make sure this is a custom Slackware 10.1 install with the tagfiles" echo "provided as described in the 'Installation' section of README file." echo echo "${MissingProgramPaths}" echo exit fi # # Gather the installation options # echo echo "- Gathering the installation options:" echo echo " . Remove non-critical packages to save space?" echo " If you choose 'Y', it will remove non-critical packages" echo "like kernel-source, glibc, gcc, etc. AWLP will run without" echo "any problem but you will not be able to compile programs" echo "from source. If you have HDD space bigger than 500 MB, then" echo "it is recommended that you choose 'N'." echo -n "Your choice: [Y/N] " read RemoveNonCriticalPackages if [ "${RemoveNonCriticalPackages}" == 'Y' -o "${RemoveNonCriticalPackages}" == 'y' ] then RemoveNonCriticalPackages='Y' else RemoveNonCriticalPackages='N' fi echo echo " . Trim-down the documents and manuals?" echo " If you choose 'Y', it will remove documents," echo "manual pages and couple of shared documents. AWLP will" echo "run without any problem but it is recommended that you" echo "keep these documents and manuals if your storage is" echo "bigger than 500 MB." echo -n "Your choice: [Y/N] " read TrimDownDocumentsManuals if [ "${TrimDownDocumentsManuals}" == "Y" -o "${TrimDownDocumentsManuals}" == "y" ] then TrimDownDocumentsManuals='Y' else TrimDownDocumentsManuals='N' fi echo echo " . Strip down the Perl package to bare minimum?" echo " If you choose 'Y', it will strip-down the Perl" echo "package to bare minimum. AWLP will run without any" echo "problems but you will not be able to use Perl modules" echo "other than the CGI module, thus saying 'N' to this" echo "option is recommended since it will let you save" echo "only 30 MB or so." echo -n "Your choice: [Y/N] " read StripDownPerlPackage if [ "${StripDownPerlPackage}" == "Y" -o "${StripDownPerlPackage}" == "y" ] then StripDownPerlPackage='Y' else StripDownPerlPackage='N' fi # # Confirm the installation options # echo echo "- Confirming the installation options:" echo echo " . Remove non-critical packages to save space? -> ${RemoveNonCriticalPackages} <-" echo " . Trim-down the documents and manuals? -> ${TrimDownDocumentsManuals} <-" echo " . Strip down the Perl package to bare minimum? -> ${StripDownPerlPackage} <-" echo echo -n "Continue with the installation? [Y/N] " read ContinueWithInstallation if [ "${ContinueWithInstallation}" != "Y" -a "${ContinueWithInstallation}" != "y" ] then echo echo "---------------------" echo "INSTALLATION ABORTED:" echo "---------------------" echo "You have chosen not to carry out the installation." echo exit fi # # Installing hostap-driver, hostap-utils and bridge-utils # echo echo echo "- Installing hostap-driver-${HOSTAPDRIVER_VERSION}, hostap-utils-${HOSTAPUTILS_VERSION} and bridge-utils-${BRIDGEUTILS_VERSION} ..." echo sleep 1 cd ${InstallDirectory}/tarballs tar zxvf hostap-driver-${HOSTAPDRIVER_VERSION}.tar.gz echo echo echo sleep 1 tar zxvf hostap-utils-${HOSTAPUTILS_VERSION}.tar.gz echo echo echo sleep 1 tar zxvf bridge-utils-${BRIDGEUTILS_VERSION}.tar.gz echo echo echo sleep 1 tar zxvf NoCatAuth-${NOCATAUTH_VERSION}.tar.gz echo echo echo wait cd hostap-driver-${HOSTAPDRIVER_VERSION} make clean make make install wait echo echo echo echo echo cd ../hostap-utils-${HOSTAPUTILS_VERSION} make clean make wait echo echo echo echo echo cd ../bridge-utils-${BRIDGEUTILS_VERSION} make clean ./configure make make install wait echo echo echo echo echo cd ../NoCatAuth-${NOCATAUTH_VERSION} make gateway wait echo echo echo cd ${InstallDirectory} echo echo " ---> DONE <---" echo sleep 1 # # Add /bin/false and /dev/null to the /etc/shells # echo echo "- Adding /bin/false and /dev/null to /etc/shells ..." echo sleep 1 binfalseExists=`grep "/bin/false" /etc/shells` devnullExists=`grep "/dev/null" /etc/shells` if [ -z "${binfalseExists}" ] then echo /bin/false >>/etc/shells else echo " /bin/false already exists in /etc/shells" fi if [ -z "${devnullExists}" ] then echo /dev/null >>/etc/shells else echo " /dev/null already exists in /etc/shells" fi sleep 1 echo echo " ---> DONE <---" echo sleep 1 # # Create the user and group apache # echo echo "- Create the user and group apache ..." echo sleep 1 apachegroupExists=`grep "apache:" /etc/group` apacheuserExists=`grep "apache:" /etc/passwd` if [ -z "${apachegroupExists}" ] then groupadd apache else echo " group name: apache already exists" fi if [ -z "${apacheuserExists}" ] then useradd -g apache -d /dev/null -s /bin/false -c "HTTP Server" -p zxcasdqwe123 apache else echo " user name: apache already exists" fi sleep 1 echo echo " ---> DONE <---" echo sleep 1 # # Copying and setting permissions of dhcpd.conf httpd.conf localhost.zone named.ca named.conf named.local ntp.conf oui_filtered.txt rc.dhcpd rc.local rc.ntpd rc.wlan0 rc.wlan0-pre # echo echo "- Copying and setting permissions of " echo echo " dhcpd.conf httpd.conf localhost.zone named.ca" echo " named.conf named.local nocat.conf ntp.conf" echo " oui_filtered.txt rc.dhcpd rc.local rc.ntpd" echo " rc.wlan0 rc.wlan0-pre" sleep 1 cd ${InstallDirectory}/configfiles cp dhcpd.conf /etc/dhcpd.conf chown root:apache /etc/dhcpd.conf chmod 770 /etc/dhcpd.conf cp httpd.conf /etc/apache/httpd.conf chown root:apache /etc/apache/httpd.conf chmod 770 /etc/apache/httpd.conf cp named.conf /etc/named.conf cp localhost.zone /var/named/caching-example/localhost.zone cp named.ca /var/named/caching-example/named.ca cp named.local /var/named/caching-example/named.local cp nocat.conf /usr/local/nocat/nocat.conf chown root:apache /usr/local/nocat/nocat.conf chmod 770 /usr/local/nocat/nocat.conf cp ntp.conf /etc/ntp.conf chown root:apache /etc/ntp.conf chmod 770 /etc/ntp.conf if [ ! -d "/etc/${PROJECTRELATIVEPATH}" -a ! -r "/etc/${PROJECTRELATIVEPATH}" -a ! -w "/etc/${PROJECTRELATIVEPATH}" -a ! -x "/etc/${PROJECTRELATIVEPATH}" ] then rm -rf /etc/${PROJECTRELATIVEPATH} mkdir /etc/${PROJECTRELATIVEPATH} chown root:apache /etc/${PROJECTRELATIVEPATH} chmod 750 /etc/${PROJECTRELATIVEPATH} fi cp oui_filtered.txt /etc/${PROJECTRELATIVEPATH}/oui_filtered.txt chown -R root:apache /etc/${PROJECTRELATIVEPATH} chmod -R 770 /etc/${PROJECTRELATIVEPATH} chmod 700 /etc/rc.d/rc.bind cp rc.dhcpd /etc/rc.d/rc.dhcpd chmod 700 /etc/rc.d/rc.dhcpd chmod 700 /etc/rc.d/rc.httpd cp rc.local /etc/rc.d chown root:apache /etc/rc.d/rc.local chmod 750 /etc/rc.d/rc.local cp rc.ntpd /etc/rc.d chown root:apache /etc/rc.d/rc.ntpd chmod 770 /etc/rc.d/rc.ntpd cp rc.wlan0 /etc/rc.d chown root:apache /etc/rc.d/rc.wlan0 chmod 770 /etc/rc.d/rc.wlan0 cp rc.wlan0-pre /etc/rc.d chown root:apache /etc/rc.d/rc.wlan0-pre chmod 770 /etc/rc.d/rc.wlan0-pre cd ${InstallDirectory} sleep 1 echo echo " ---> DONE <---" echo sleep 1 # # Creating .htaccess and .htpasswd files for authenticated access # echo echo "- Creating .htaccess and .htpasswd files for authenticated access ..." echo sleep 1 cd ${InstallDirectory}/configfiles if [ ! -d "/var/www/cgi-bin/${PROJECTRELATIVEPATH}" ] then mkdir /var/www/cgi-bin/${PROJECTRELATIVEPATH} fi cp .htaccess /var/www/cgi-bin/${PROJECTRELATIVEPATH} chown root:apache /var/www/cgi-bin/${PROJECTRELATIVEPATH}/.htaccess chmod 770 /var/www/cgi-bin/${PROJECTRELATIVEPATH}/.htaccess echo -n " " htpasswd -bc /var/www/cgi-bin/${PROJECTRELATIVEPATH}/.htpasswd ${AUTHENTICATIONUsername} ${AUTHENTICATIONPassword} chown root:apache /var/www/cgi-bin/${PROJECTRELATIVEPATH}/.htpasswd chmod 770 /var/www/cgi-bin/${PROJECTRELATIVEPATH}/.htpasswd cd ${InstallDirectory} sleep 1 echo echo " ---> DONE <---" echo sleep 1 # # Setting up various permissions on related files # echo echo "- Setting up various permissions on related files ..." sleep 1 cp -p ${InstallDirectory}/tarballs/hostap-utils-${HOSTAPUTILS_VERSION}/prism2_param /usr/local/bin/prism2_param chown root:apache /usr/local/bin/prism2_param chmod 4750 /usr/local/bin/prism2_param cp -p ${InstallDirectory}/tarballs/hostap-utils-${HOSTAPUTILS_VERSION}/hostap_crypt_conf /usr/local/bin/hostap_crypt_conf chown root:apache /usr/local/bin/hostap_crypt_conf chmod 4750 /usr/local/bin/hostap_crypt_conf chown root:apache /usr/sbin/dhcpd chmod 4750 /usr/sbin/dhcpd chown root:apache /sbin/iwpriv chmod 4750 /sbin/iwpriv chown root:apache /sbin/iwconfig chmod 4750 /sbin/iwconfig chown root:apache /sbin/ifconfig chmod 4750 /sbin/ifconfig chown root:apache /bin/ps chmod 4750 /bin/ps chown root:apache /sbin/halt chmod 4750 /sbin/halt chown root:apache /usr/bin/htpasswd chmod 4750 /usr/bin/htpasswd chown root:apache /sbin/cardctl chmod 4750 /sbin/cardctl chown root:apache /usr/sbin/iptables chmod 4750 /usr/sbin/iptables chown root:apache /sbin/modprobe chmod 4750 /sbin/modprobe # These are needed to make sure that the system can start these services chmod ug+x /etc/rc.d/rc.bind /etc/rc.d/rc.dhcpd /etc/rc.d/rc.hotplug /etc/rc.d/rc.httpd chmod ug+x /etc/rc.d/rc.inetd /etc/rc.d/rc.pcmcia /etc/rc.d/rc.sshd /etc/rc.d/rc.wireless sleep 1 echo echo " ---> DONE <---" echo sleep 1 # # Removing unneeded packages from the distrubition if chosen # if [ "${RemoveNonCriticalPackages}" == "Y" ] then echo echo "- Removing unneeded packages from the distrubition ... " sleep 1 cd /var/log/packages for ThePackage in "${PACKAGES_TOBE_REMOVED[@]}" do echo echo " . Removing ${ThePackage} ..." echo removepkg ${ThePackage} done cd ${InstallDirectory} sleep 1 echo echo echo echo " ---> DONE <---" echo sleep 1 fi # # Trim-down the documents and manuals if chosen # if [ "${TrimDownDocumentsManuals}" == "Y" ] then echo echo "- Trim-down the documents and manuals ..." sleep 1 chmod 400 /boot/vmlinuz* rm -rf /usr/doc/* rm -rf /usr/man/* rm -rf /usr/share/locale/* rm -rf /var/www/icons/* rm -rf /var/www/htdocs/* sleep 1 echo echo " ---> DONE <---" echo sleep 1 fi # # Stripping the Perl package down to bare minimum if chosen # if [ "${StripDownPerlPackage}" == "Y" ] then echo echo "- Stripping the Perl package down to bare minimum ..." sleep 1 mkdir /tmp/perl mkdir /tmp/perl/usrbinperl mkdir /tmp/perl/usrlibperl cp -pR /usr/bin/perl* /tmp/perl/usrbinperl cp -pR /usr/lib/perl5/5.8.6/CGI /tmp/perl/usrlibperl cp -pR /usr/lib/perl5/5.8.6/warnings /tmp/perl/usrlibperl cp -pR /usr/lib/perl5/5.8.6/*.pm /tmp/perl/usrlibperl cd /var/log/packages removepkg perl-5.8.6-i486-1 mkdir /usr/lib/perl5 mkdir /usr/lib/perl5/5.8.6 cp -pR /tmp/perl/usrbinperl/* /usr/bin cp -pR /tmp/perl/usrlibperl/* /usr/lib/perl5/5.8.6 rm -rf /tmp/* cd ${InstallDirectory} sleep 1 echo echo echo echo " ---> DONE <---" echo sleep 1 fi # # Copying the core scripts and setting their permissions # echo echo "- Copying the core scripts and setting their permissions ... " sleep 1 cd ${InstallDirectory}/corescripts cp engines1.pl /var/www/cgi-bin/${PROJECTRELATIVEPATH} chown root:apache /var/www/cgi-bin/${PROJECTRELATIVEPATH}/engines1.pl chmod 755 /var/www/cgi-bin/${PROJECTRELATIVEPATH}/engines1.pl cp engines2.pl /var/www/cgi-bin/${PROJECTRELATIVEPATH} chown root:apache /var/www/cgi-bin/${PROJECTRELATIVEPATH}/engines2.pl chmod 755 /var/www/cgi-bin/${PROJECTRELATIVEPATH}/engines2.pl cp error_messages.pl /var/www/cgi-bin/${PROJECTRELATIVEPATH} chown root:apache /var/www/cgi-bin/${PROJECTRELATIVEPATH}/error_messages.pl chmod 755 /var/www/cgi-bin/${PROJECTRELATIVEPATH}/error_messages.pl cp global_configuration.pl /var/www/cgi-bin/${PROJECTRELATIVEPATH} chown root:apache /var/www/cgi-bin/${PROJECTRELATIVEPATH}/global_configuration.pl chmod 755 /var/www/cgi-bin/${PROJECTRELATIVEPATH}/global_configuration.pl cp index.html /var/www/htdocs chown root:apache /var/www/htdocs/index.html chmod 755 /var/www/htdocs/index.html cp index.pl /var/www/cgi-bin/${PROJECTRELATIVEPATH} chown root:apache /var/www/cgi-bin/${PROJECTRELATIVEPATH}/index.pl chmod 755 /var/www/cgi-bin/${PROJECTRELATIVEPATH}/index.pl cp radar.pl /var/www/cgi-bin/${PROJECTRELATIVEPATH} chown root:apache /var/www/cgi-bin/${PROJECTRELATIVEPATH}/radar.pl chmod 755 /var/www/cgi-bin/${PROJECTRELATIVEPATH}/radar.pl cp extras.pl /var/www/cgi-bin/${PROJECTRELATIVEPATH} chown root:apache /var/www/cgi-bin/${PROJECTRELATIVEPATH}/extras.pl chmod 755 /var/www/cgi-bin/${PROJECTRELATIVEPATH}/extras.pl cp splash.html /usr/local/nocat/htdocs cp status.html /usr/local/nocat/htdocs cd ${InstallDirectory} sleep 1 echo echo " ---> DONE <---" echo sleep 1 # # Copying the images # echo echo "- Copying the images ..." sleep 1 cd ${InstallDirectory}/images cp LinuxPowered.gif /var/www/htdocs chown root:apache /var/www/htdocs/LinuxPowered.gif chmod 755 /var/www/htdocs/LinuxPowered.gif cd ${InstallDirectory} sleep 1 echo echo " ---> DONE <---" echo sleep 1 # # Do the elapsed time calculation # ElapsedTimeEnd=`date +%s` ElapsedTime=`expr ${ElapsedTimeEnd} - ${ElapsedTimeBegin}` # # End of successfull installation # echo echo echo echo "------------------------------------------------" echo "Successfully installed: " echo "${PROJECTNAME} v${PROJECTVERSION}" echo echo "Elapsed Time: ${ElapsedTime} seconds" echo echo "The system will be functional after a reboot" echo "Rebooting the system in 5 seconds ... " echo echo "------------------------------------------------" echo sleep 5 reboot