From d4647723c2e935813e4fdf9c86553c0af02b2069 Mon Sep 17 00:00:00 2001 From: Tomas Plesnik <plesnik@ics.muni.cz> Date: Tue, 6 Dec 2011 10:51:48 +0100 Subject: [PATCH] automaticke testovani perl modulu; skript prepsan do funkci; doplneno kopirovani dokumentu do adresare doc --- src/warden-client/sh/install.sh | 375 +++++++++++++++++--------------- 1 file changed, 204 insertions(+), 171 deletions(-) diff --git a/src/warden-client/sh/install.sh b/src/warden-client/sh/install.sh index ee9c1d5..0d6e579 100755 --- a/src/warden-client/sh/install.sh +++ b/src/warden-client/sh/install.sh @@ -31,7 +31,7 @@ # otherwise) arising in any way out of the use of this software, even # if advised of the possibility of such damage. -VERSION="1.0.0" +VERSION="1.1.0" #------------------------------------------------------------------------------- # FUNCTIONS @@ -86,25 +86,198 @@ err_clean() } +os_chck() +{ + OS=`uname` + if [ "$OS" != "Linux" ]; then + echo "Sorry, unsupported operating system detected - \"$OS\"!" + exit 1 + fi +} + + +shell_chck() +{ + SHELL=`echo $SHELL` + if [ "$SHELL" != "/bin/bash" ]; then + echo "Sorry, this script is usable in Bourne Again Shell (bash) only!" + exit 1 + fi +} + + +root_chck() +{ + if [ $UID -ne 0 ]; then + echo "You must be root for running this script!" + exit 1 + fi +} + + +params_chck() +{ + if [ -z $prefix ]; then + prefix=/opt + echo "Warning: parameter -d <directory> is not set - default installation directory is /opt!" + fi + if [ -z $user ]; then + echo "Parameter -u <user> is not set!" + exit 1 + fi + if [ -z $key ]; then + echo "Parameter -k <ssl_key_file> is not set!" + exit 1 + fi + if [ -z $cert ]; then + echo "Parameter -c <ssl_cert_file> is not set!" + exit 1 + fi + if [ -z $ca_file ]; then + echo "Parameter -a <ssl_ca_file> is not set!" + exit 1 + fi +} + + +perl_chck() +{ + echo -n "Checking Perl interpreter ... " + which perl 1>/dev/null; ret_val=`echo $?` + if [ $ret_val -eq 0 ]; then + echo "OK" + else + echo "FAILED!" + exit 1 + fi +} + + +modules_chck() +{ + for module in ${modules[@]}; + do + echo -n "Checking $module module ... " + perl -e "use $module" 2> $err; ret_val=`echo $?` + if [ $ret_val -eq 0 ]; then + echo "OK" + else + err + fi + done +} + + +installation_dir_chck() +{ + echo -n "Checking installation directory ... " + if [ ! -d $prefix ]; then + echo "FAILED!" + ls $prefix + exit 1 + else + echo "OK" + fi +} + + +make_warden_dir() +{ + echo -n "Making warden client directory ... " + cp CHANGELOG INSTALL LICENSE README "$client_path/doc" + cp -R ./warden-client $prefix 2> $err; ret_val=`echo $?` + if [ $ret_val -eq 0 ]; then + echo "OK" + else + err_clean + fi +} + + +copy_key() +{ + echo -n "Copying certificate key file ... " + cp $key $etc 2> $err; ret_val=`echo $?` + if [ $ret_val -eq 0 ]; then + echo "OK" + else + err_clean + fi +} + + +copy_cert() +{ + echo -n "Copying certificate file ... " + cp $cert $etc 2> $err; ret_val=`echo $?` + if [ $ret_val -eq 0 ]; then + echo "OK" + else + err_clean + fi +} + + +make_conf_file() +{ + echo -n "Creating configuration file ... " +echo "# +# warden-client.conf - configuration file for the warden sender/receiver client +# + #------------------------------------------------------------------------------- -# MAIN +# URI - URI address of Warden server #------------------------------------------------------------------------------- +\$URI = \"https://warden.cesnet.cz:443/Warden\"; -# OS test -OS=`uname` -if [ "$OS" != "Linux" ]; then - echo "Sorry, unsupported operating system detected - \"$OS\"!" - exit 1 -fi +#------------------------------------------------------------------------------- +# SSL_KEY_FILE - path to client SSL certificate key file +#------------------------------------------------------------------------------- +\$SSL_KEY_FILE = \"$etc/$key_file\"; +#------------------------------------------------------------------------------- +# SSL_CERT_FILE - path to client SSL certificate file +#------------------------------------------------------------------------------- +\$SSL_CERT_FILE = \"$etc/$cert_file\"; -# shell test -SHELL=`echo $SHELL` -if [ "$SHELL" != "/bin/bash" ]; then - echo "Sorry, this script is usable in Bourne Again Shell (bash) only!" - exit 1 -fi +#------------------------------------------------------------------------------- +# SSL_CA_FILE - path to CA certificate file +#------------------------------------------------------------------------------- +\$SSL_CA_FILE = \"$ca_file\"; +" > $conf_file 2> $err; ret_val=`echo $?` + if [ $ret_val -eq 0 ]; then + echo "OK" + else + err_clean + fi +} + + +change_permissions() +{ + echo -n "Changing permissions to installed package ... " + chown -R $user: $client_path 2>$err; ret_val=`echo $?` + if [ $ret_val -eq 0 ]; then + echo "OK" + else + err_clean + fi +} + + + +#------------------------------------------------------------------------------- +# MAIN +#------------------------------------------------------------------------------- + +# list of used Perl modules +modules=(SOAP::Lite IO::Socket::SSL SOAP::Transport::TCP FindBin) + +# OS test +os_chck +# Shell test +shell_chck # read input while getopts "d:u:k:c:a:Vh" options; do @@ -120,36 +293,11 @@ while getopts "d:u:k:c:a:Vh" options; do esac done +# root test +root_chck -# root controle -if [ $UID -ne 0 ]; then - echo "You must be root for running this script!" - exit 1 -fi - - -# check inputs -if [ -z $prefix ]; then - prefix=/opt - echo "Warning: parameter -d <directory> is not set - default installation directory is /opt!" -fi -if [ -z $user ]; then - echo "Parameter -u <user> is not set!" - exit 1 -fi -if [ -z $key ]; then - echo "Parameter -k <ssl_key_file> is not set!" - exit 1 -fi -if [ -z $cert ]; then - echo "Parameter -c <ssl_cert_file> is not set!" - exit 1 -fi -if [ -z $ca_file ]; then - echo "Parameter -a <ssl_ca_file> is not set!" - exit 1 -fi - +# params test +params_chck # create variables key_file=`basename $key` @@ -159,151 +307,36 @@ etc="$client_path/etc" conf_file="$etc/warden-client.conf" err="/tmp/warden-err" -#------------------------------------------------------------------------------- -# Dependencies check-in +echo +echo "------------------------- Dependencies check-in -------------------------" -echo "------------------------- Dependencies check-in ---------------------------" +# Perl interpreter test +perl_chck -# check Perl interpreter -echo -n "Checking Perl package ... " -which perl 1>/dev/null; ret_val=`echo $?` -if [ $ret_val -eq 0 ]; then - echo "OK" -else - echo "FAILED!" - exit 1 -fi - - -# check SOAP::Lite package -echo -n "Checking SOAP::Lite package ... " -perl -e 'use SOAP::Lite' 2> $err; ret_val=`echo $?` -if [ $ret_val -eq 0 ]; then - echo "OK" -else - err -fi - - -# check IO::Socket::SSL package -echo -n "Checking IO::Socket::SSL package ... " -perl -e 'use IO::Socket::SSL' 2> $err; ret_val=`echo $?` -if [ $ret_val -eq 0 ]; then - echo "OK" -else - err -fi - - -# check SOAP::Transport::TCP package -echo -n "Checking SOAP::Transport::TCP package ... " -perl -e 'use SOAP::Transport::TCP' 2> $err; ret_val=`echo $?` -if [ $ret_val -eq 0 ]; then - echo "OK" -else - err -fi - - -# check FindBin package -echo -n "Checking FindBin package ... " -perl -e 'use FindBin' 2> $err; ret_val=`echo $?` -if [ $ret_val -eq 0 ]; then - echo "OK" -else - err -fi +# Perl modules test +modules_chck -#------------------------------------------------------------------------------- -# Installation process echo -echo "------------------------- Installation process ---------------------------" - +echo "------------------------- Installation process --------------------------" # check installation directory -echo -n "Checking installation directory ... " -if [ ! -d $prefix ]; then - echo "FAILED!" - ls $prefix - exit 1 -else - echo "OK" -fi - +installation_dir_chck # make warden client directory -echo -n "Making warden client directory ... " -cp -R ./warden-client $prefix 2> $err; ret_val=`echo $?` -if [ $ret_val -eq 0 ]; then - echo "OK" -else - err_clean -fi - +make_warden_dir # copy cert key file -echo -n "Copying certificate key file ... " -cp $key $etc 2> $err; ret_val=`echo $?` -if [ $ret_val -eq 0 ]; then - echo "OK" -else - err_clean -fi - +copy_key # copy cert file -echo -n "Copying certificate file ... " -cp $cert $etc 2> $err; ret_val=`echo $?` -if [ $ret_val -eq 0 ]; then - echo "OK" -else - err_clean -fi - +copy_cert # create conf file -echo -n "Creating configuration file ... " -echo "# -# warden-client.conf - configuration file for the warden sender/receiver client -# - -#------------------------------------------------------------------------------- -# URI - URI address of Warden server -#------------------------------------------------------------------------------- -\$URI = \"https://warden.cesnet.cz:443/Warden\"; - -#------------------------------------------------------------------------------- -# SSL_KEY_FILE - path to client SSL certificate key file -#------------------------------------------------------------------------------- -\$SSL_KEY_FILE = \"$etc/$key_file\"; - -#------------------------------------------------------------------------------- -# SSL_CERT_FILE - path to client SSL certificate file -#------------------------------------------------------------------------------- -\$SSL_CERT_FILE = \"$etc/$cert_file\"; - -#------------------------------------------------------------------------------- -# SSL_CA_FILE - path to CA certificate file -#------------------------------------------------------------------------------- -\$SSL_CA_FILE = \"$ca_file\"; -" > $conf_file 2> $err; ret_val=`echo $?` -if [ $ret_val -eq 0 ]; then - echo "OK" -else - err_clean -fi - +make_conf_file # change permissions -echo -n "Changing permissions to installed package ... " -chown -R $user: $client_path 2>$err; ret_val=`echo $?` -if [ $ret_val -eq 0 ]; then - echo "OK" -else - err_clean -fi - +change_permissions echo echo "Please check configuration file in $conf_file!" -- GitLab