From aef58d4136b23fbc29a3c93baa7dab87b65f6579 Mon Sep 17 00:00:00 2001 From: Tomas Plesnik <plesnik@ics.muni.cz> Date: Tue, 14 Feb 2012 17:04:47 +0100 Subject: [PATCH] odstraneni update.sh skriptu; pridani uninstall.sh skriptu --- src/warden-server/sh/uninstall.sh | 227 +++++++++++++++++++ src/warden-server/sh/update.sh | 352 ------------------------------ 2 files changed, 227 insertions(+), 352 deletions(-) create mode 100755 src/warden-server/sh/uninstall.sh delete mode 100755 src/warden-server/sh/update.sh diff --git a/src/warden-server/sh/uninstall.sh b/src/warden-server/sh/uninstall.sh new file mode 100755 index 0000000..bb4cc9b --- /dev/null +++ b/src/warden-server/sh/uninstall.sh @@ -0,0 +1,227 @@ +#!/bin/bash +# +# uninstall.sh +# +# Copyright (C) 2011-2012 Cesnet z.s.p.o +# Author(s): Tomas PLESNIK <plesnik@ics.muni.cz> +# Jan SOUKAL <soukal@ics.muni.cz> +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +# 1. Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# 2. Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in +# the documentation and/or other materials provided with the +# distribution. +# 3. Neither the name of the Cesnet z.s.p.o nor the names of its +# contributors may be used to endorse or promote products derived from +# this software without specific prior written permission. +# +# This software is provided ``as is'', and any express or implied +# warranties, including, but not limited to, the implied warranties of +# merchantability and fitness for a particular purpose are disclaimed. +# In no event shall the Cesnet z.s.p.o or contributors be liable for +# any direct, indirect, incidental, special, exemplary, or consequential +# damages (including, but not limited to, procurement of substitute +# goods or services; loss of use, data, or profits; or business +# interruption) however caused and on any theory of liability, whether +# in contract, strict liability, or tort (including negligence or +# otherwise) arising in any way out of the use of this software, even +# if advised of the possibility of such damage. + +VERSION="1.0" + +#------------------------------------------------------------------------------- +# FUNCTIONS +#------------------------------------------------------------------------------- +usage() +{ + echo "Usage: `basename $0` [-d <directory>] [-hV]" + echo "-d <directory> uninstallation directory (default: /opt)" + echo "-h print this help" + echo "-V print script version number and exit" + echo + echo "Example: # ./`basename $0` -d /opt" + echo + echo "Note: You must be root for running this script." + echo " For more information about uninstallation process, see README file (section Uninstallation)." + echo + exit 0 +} + + +version() +{ + echo "`basename ${0}` - current version is $VERSION" + exit 0 +} + + +err() +{ + echo "FAILED!" + cat $err + rm -rf $err $backup_dir + echo + echo "Uninstallation of $package_version package FAILED!!!" + exit 1 +} + + +err_clean() +{ + echo "FAILED!" + echo " -> Reverting changes of warden client package ... OK" + rm -rf "$client_path/*" > /dev/null 2>&1 + cp -R "$backup_dir/*" $client_path + cat $err + rm -rf $err $backup_dir + echo + echo "Uninstallation of $package_version package FAILED!!!" + exit 1 +} + + +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 uninstallation directory is $prefix!" + fi +} + + +obtain_package_version() +{ + if [ -f $old_package_version_file ]; then + package_version=`cat $old_package_version_file` + else + package_version="unknown" + fi +} + + +warden_dir_chck() +{ + echo -n "Checking warden client directory ... " + if [ ! -d $client_path ]; then + echo "FAILED!" + ls $client_path + exit 1 + else + echo "OK" + fi +} + + +backup() +{ + echo -n "Backing-up warden client directory ... " + mkdir $backup_dir + cp -R $client_path $backup_dir 2> $err; ret_val=`echo $?` + if [ $ret_val -eq 0 ]; then + echo "OK" + else + err + fi +} + + +uninstall_warden_client() +{ + echo -n "Uninstalling $package_version package ... " + rm -rf $client_path 2> $err; ret_val=`echo $?` + if [ $ret_val -eq 0 ]; then + echo "OK" + else + err_clean + fi +} + +#------------------------------------------------------------------------------- +# MAIN +#------------------------------------------------------------------------------- + +# OS test +os_chck + +# Shell test +shell_chck + +# read input +while getopts "d:Vh" options; do + case $options in + d ) prefix=$OPTARG;; + h ) usage;; + V ) version;; + * ) usage;; + esac +done + +# root test +root_chck + +# params test +params_chck + +# create variables +[[ $prefix == */ ]] && prefix="${prefix%?}" # remove last char (slash) from prefix +client_path="$prefix/warden-client" +etc="$client_path/etc" +old_package_version_file="$etc/package_version" +err="/tmp/warden-err" +backup_dir="/tmp/warden-backup" + +# obtain version of installed warden-client package +obtain_package_version + +echo +echo "------------------------- Uninstallation process --------------------------------" + +# check if $prefix/warden-client directory exist +warden_dir_chck + +# make backup of currently installed warden-client package +backup + +# do uninstallation +uninstall_warden_client + +echo +echo "Uninstallation of $package_version package was SUCCESSFUL!!!" + +# cleanup section +rm -rf $err $backup_dir + +exit 0 diff --git a/src/warden-server/sh/update.sh b/src/warden-server/sh/update.sh deleted file mode 100755 index 9d44e29..0000000 --- a/src/warden-server/sh/update.sh +++ /dev/null @@ -1,352 +0,0 @@ -#!/bin/bash -# -# update.sh -# -# Copyright (C) 2012 Cesnet z.s.p.o -# Author(s): Tomas PLESNIK <plesnik@ics.muni.cz> -# Jan SOUKAL <soukal@ics.muni.cz> -# -# Redistribution and use in source and binary forms, with or without -# modification, are permitted provided that the following conditions -# are met: -# 1. Redistributions of source code must retain the above copyright -# notice, this list of conditions and the following disclaimer. -# 2. Redistributions in binary form must reproduce the above copyright -# notice, this list of conditions and the following disclaimer in -# the documentation and/or other materials provided with the -# distribution. -# 3. Neither the name of the Cesnet z.s.p.o nor the names of its -# contributors may be used to endorse or promote products derived from -# this software without specific prior written permission. -# -# This software is provided ``as is'', and any express or implied -# warranties, including, but not limited to, the implied warranties of -# merchantability and fitness for a particular purpose are disclaimed. -# In no event shall the Cesnet z.s.p.o or contributors be liable for -# any direct, indirect, incidental, special, exemplary, or consequential -# damages (including, but not limited to, procurement of substitute -# goods or services; loss of use, data, or profits; or business -# interruption) however caused and on any theory of liability, whether -# in contract, strict liability, or tort (including negligence or -# 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" - -#------------------------------------------------------------------------------- -# FUNCTIONS -#------------------------------------------------------------------------------- -usage() -{ - echo "Usage: `basename $0` [-d <directory>] [-hV]" - echo "-d <directory> installation directory (default: /opt)" - echo "-h print this help" - echo "-V print script version number and exit" - echo - echo "Example: ./`basename $0` -d /opt" - echo - echo "Note: You must be root for running this script." - echo " For more information about update process, see README file (section Update)." - echo - exit 0 -} - - -version() -{ - echo "`basename ${0}` - current version is $VERSION" - exit 0 -} - - -err() -{ - echo "FAILED!" - cat $err - rm -rf $err - rm -rf $backup_dir - echo - echo "Update FAILED!!!" - exit 1 -} - - -err_clean() -{ - echo "FAILED!" - echo " -> Reverting changes of warden client package ... OK" - rm -rf "$client_path/*" > /dev/null 2>&1 - cp -R "$backup_dir/*" $client_path - cat $err - rm -rf $err - rm -rf $backup_dir - echo - echo "Update FAILED!!!" - exit 1 -} - - -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 $prefix!" - 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!" - echo "Error: Perl interpreter is not installed!" - 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 -} - - -warden_dir_chck() -{ - echo -n "Checking warden client directory ... " - if [ ! -d $client_path ]; then - echo "FAILED!" - ls $prefix - exit 1 - else - echo "OK" - fi -} - -backup() -{ - echo -n "Backing-up warden client directory ... " - mkdir $backup_dir - cp -R $client_path $backup_dir 2> $err; ret_val=`echo $?` - if [ $ret_val -eq 0 ]; then - echo "OK" - else - err - fi -} - - -obtain_warden_user() -{ - echo -n "Obtaining warden client directory owner ... " - user=`stat -c %U $conf_file` 2> $err; ret_val=`echo $?` - if [ $ret_val -eq 0 ]; then - echo "OK" - else - err - fi -} - - -update_warden_dir() -{ - echo -n "Updating warden client directory ... " - rsync -q --recursive --archive --delete --exclude="warden-client/etc" --exclude="warden-client/var" warden-client $prefix 2> $err; ret_val=`echo $?` - if [ $ret_val -eq 0 ]; then - echo "OK" - else - err_clean - fi - cp -u CHANGELOG INSTALL LICENSE README README.cesnet "$client_path/doc" -} - - -make_conf_file() -{ - echo -n "Creating configuration file ... " - uri=`cat $conf_file | grep '$URI'` - ssl_key_file=`cat $conf_file | grep '$SSL_KEY_FILE'` - ssl_cert_file=`cat $conf_file | grep '$SSL_CERT_FILE'` - ssl_ca_file=`cat $conf_file | grep '$SSL_CA_FILE'` -echo "# -# warden-client.conf - configuration file for the warden sender/receiver client -# - -#------------------------------------------------------------------------------- -# URI - URI address of Warden server -#------------------------------------------------------------------------------- -$uri - -#------------------------------------------------------------------------------- -# SSL_KEY_FILE - path to client SSL certificate key file -#------------------------------------------------------------------------------- -$ssl_key_file - -#------------------------------------------------------------------------------- -# SSL_CERT_FILE - path to client SSL certificate file -#------------------------------------------------------------------------------- -$ssl_cert_file - -#------------------------------------------------------------------------------- -# SSL_CA_FILE - path to CA certificate file -#------------------------------------------------------------------------------- -$ssl_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 updated 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:Vh" options; do - case $options in - d ) prefix=$OPTARG;; - h ) usage;; - V ) version;; - * ) usage;; - esac -done - -# root test -root_chck - -# params test -params_chck - -# create variables -client_path="$prefix/warden-client" -etc="$client_path/etc" -conf_file="$etc/warden-client.conf" -err="/tmp/warden-err" -backup_dir="/tmp/warden-backup" - - -echo -echo "------------------------- Dependencies check-in -------------------------" - -# Perl interpreter test -perl_chck - -# Perl modules test -modules_chck - - -echo -echo "------------------------- Update process --------------------------------" - -# check installation directory -installation_dir_chck - -# check warden client directory -warden_dir_chck - -# backup old warden client installation -backup - -# obtain current warden client user -obtain_warden_user - -# make warden client directory -update_warden_dir - -# create conf file -make_conf_file - -# change permissions -change_permissions - -echo -echo "Please check configuration file in $conf_file!" -echo -echo "Update was SUCCESSFUL!!!" - -# cleanup section -rm -rf $err -rm -rf $backup_dir - -exit 0 -- GitLab