%PDF- %PDF-
Mini Shell

Mini Shell

Direktori : /opt/webdir/bin/menu/01_hosts/
Upload File :
Create Path :
Current File : //opt/webdir/bin/menu/01_hosts/functions.sh

BASE_DIR=/opt/webdir
BIN_DIR=$BASE_DIR/bin

. $BIN_DIR/bitrix_utils.sh || exit 1

[[ -z $DEBUG ]] && DEBUG=0
HOSTS_FUNCTIONS=1
logo=$(get_logo)

hosts_menu=$BIN_DIR/menu/01_hosts
local_menu=$BIN_DIR/menu/02_local

# get_text variables
[[ -f $hosts_menu/functions.txt  ]] && \
    . $hosts_menu/functions.txt

[[ -f $local_menu/functions.sh ]] && \
   . $local_menu/functions.sh

bx_process_script=$BIN_DIR/bx-process               # wrapper for ansible which contains process
bx_monitor_script=$BIN_DIR/bx-monitor               # wrapper for ansible which contains monitoring
ansible_wrapper=$BIN_DIR/wrapper_ansible_conf       # wrapper for ansible which contains host manage

ansible_copy_keys=$BIN_DIR/ssh_keycopy              # expect script which can copy ssh key to host
ansible_changepwd=$BIN_DIR/ssh_chpasswd             # expect ecript which can change user password

# LOGS paths for notification
log_copy_keys=$LOGS_DIR/ssh_keycopy.log
log_changepwd=$LOGS_DIR/ssh_chpasswd.log

site_menu_dir=$BIN_DIR/menu/06_site
site_menu_fnc=$site_menu_dir/functions.sh
bx_sites_script=$BIN_DIR/bx-sites                   # wrapper for ansible which contains site action
. $site_menu_fnc || exit 1

# copy ssh key to the server
# fill out
# ANSIBLE_COPY_ERR
# ANSIBLE_COPY_MSG
copy_sshkey() {
    local ssh_server="$1"
    local ssh_user="$2"
    local ssh_password="$3"

    [[ -z "$ANSIBLE_SSHKEY_PUBLIC" ]] && get_ansible_sshkey

    # copy public key to remote server, use input password
    local copy_cmd="$ansible_wrapper -a copy"
    copy_cmd=$copy_cmd" -i $ssh_server -k $ANSIBLE_SSHKEY_PUBLIC"
    copy_cmd=$copy_cmd" -p $(printf "%q" "$ssh_password")"

    if [[ $DEBUG -gt 0 ]]; then
        echo "copy_cmd=$copy_cmd"
    fi
    ANSIBLE_COPY_INFO=$(eval "$copy_cmd")
    ANSIBLE_COPY_ERR=$(echo "$ANSIBLE_COPY_INFO" | grep '^error:' | sed -e 's/^error://')
    ANSIBLE_COPY_MSG=$(echo "$ANSIBLE_COPY_INFO" | grep '^message:' | sed -e 's/^message://')

    # debug info
    if [[ $DEBUG -gt 0 ]]; then
        echo "ANSIBLE_COPY_ERR=$ANSIBLE_COPY_ERR"
        echo "ANSIBLE_COPY_MSG=$ANSIBLE_COPY_MSG"
    fi

    [[ -n "$ANSIBLE_COPY_ERR" ]] && return 1
    return 0
}

# change user password via ssh 
# ANSIBLE_CHPWD_ERR
# ANSIBLE_CHPWD_MSG
# NEW_PASSWORD
change_password_viassh(){
    local ssh_server="$1"
    local ssh_user="$2"
    local current_password= "$3"

    ask_password_info "$ssh_user" "new_password"
    ask_password_rtn=$?
    [[ $ask_password_rtn -gt 0 ]] && exit 1

    local changepass_cmd="$ansible_wrapper -a pw -i $ssh_server"
    changepass_cmd=$changepass_cmd" -p $(printf "%q" "$current_password")"
    changepass_cmd=$changepass_cmd" -P $(printf "%q" "$new_password")"
    
    if [[ $DEBUG -gt 0 ]]; then
        echo "changepass_cmd=$changepass_cmd"
    fi
    ANSIBLE_CHPWD_INF=$(eval "$changepass_cmd")
    ANSIBLE_CHPWD_ERR=$(echo "$ANSIBLE_CHPWD_INF" | grep -e "^error:" | sed -e "s/^error://" )
    ANSIBLE_CHPWD_MSG=$(echo "$ANSIBLE_CHPWD_INF" | grep -e "^message:" | sed -e "s/^message://" )

    if [[ $DEBUG -gt 0 ]]; then
        echo "ANSIBLE_CHPWD_ERR=$ANSIBLE_CHPWD_ERR"
        echo "ANSIBLE_CHPWD_MSG=$ANSIBLE_CHPWD_MSG"
    fi

    [[ -n $ANSIBLE_CHPWD_MSG ]] && return 1
    NEW_PASSWORD=$(printf "%q" "$new_password")
    [[ $DEBUG -gt 0 ]] && echo "NEW_PASSWORD=$NEW_PASSWORD"
    return 0
}

# add server idnetifier in configuration and configure monitoring settings
add_server_to_pool(){
    local host_ident=$1
    local host_addr=$2

    # add server to pool configuration file
    local add_server_cmd="$ansible_wrapper -a add -H $host_ident -i $host_addr"
    [[ $DEBUG -gt 0 ]] && echo "$add_server_cmd"
    
    ANSIBLE_ADD_INFO=$(eval "$add_server_cmd")
    
    ANSIBLE_ADD_ERR=$(echo "$ANSIBLE_ADD_INFO" | grep '^error:' | sed -e 's/^error://')
    ANSIBLE_ADD_MSG=$(echo "$ANSIBLE_ADD_INFO" | grep '^message:' | sed -e 's/^message://')
    if [[ $DEBUG -gt 0 ]]; then
        echo "ANSIBLE_ADD_ERR=$ANSIBLE_ADD_ERR"
        echo "ANSIBLE_ADD_MSG=$ANSIBLE_ADD_MSG"
    fi
    [[ -n "$ANSIBLE_ADD_ERR" ]] && return 1

    # update monitoring
    # Host::createHost: modification was successful, host_vars=yes, hosts=yes task_id=monitor_0786886321 task_pid=32039 task_status=running
    task_id=$(echo "$ANSIBLE_ADD_MSG" | egrep -o "task_id=\S+" | awk -F'=' '{print $2}')
    task_pid=$(echo "$ANSIBLE_ADD_MSG" | egrep -o "task_pid=\S+" | awk -F'=' '{print $2}')
    task_status=$(echo "$ANSIBLE_ADD_MSG" | egrep -o "task_status=\S+" | awk -F'=' '{print $2}')
    if [[ -n "$task_id" ]]; then
        echo "Start job:"
        printf "%-10s: %s\n" "JobID"  "$task_id"
        printf "%-10s: %s\n" "PID"    "$task_pid"
        echo "It will $_task_txt in the pool."
        print_message "$HM0200" "" "" any_key
    fi

    return 0
}

# delete it from ansible configuration
forget_server(){
    local host_ident="$1"

    cur_id=$(get_server_id "$host_ident")
    cur_id_rtn=$?
    #if [[ $cur_id_rtn -eq 1  ]]; then
    #    print_message "Press ENTER to exit" \ 
    #        "Server $host_ident was found but cannot be used due to configuration error" "" any_key
    #    return 1
    #
    if [[ $cur_id_rtn -eq 2 ]]; then
        print_message "$HM0200" "$(get_text "$HM0012" "$host_ident")" "" any_key
        return 1
    fi

    local forget_cmd="$ansible_wrapper -a forget_host"
    forget_cmd=$forget_cmd" --host $cur_id"
    if [[ $DEBUG -gt 0 ]]; then
        echo "forget_cmd=$forget_cmd"
    fi
    FORGET_INFO=$(eval "$forget_cmd")
    FORGET_ERR=$(echo "$FORGET_INFO" | grep '^error:' | sed -e 's/^error://')
    FORGET_MSG=$(echo "$FORGET_INFO" | grep '^message:' | sed -e 's/^message://')
    if [[ $DEBUG -gt 0 ]]; then
        echo "FORGET_ERR=$FORGET_ERR"
        echo "FORGET_MSG=$FORGET_MSG"
    fi
    [[ -n "$FORGET_ERR" ]] && return 1
    return 0
}

# clean options on the server and delete it from ansible configuration
purge_server(){
    local host_ident="$1"
    local host_addr="$2"

    cur_id=$(get_server_id "$host_ident")
    cur_id_rtn=$?
    if [[ $cur_id_rtn -eq 1  ]]; then
        print_message "$HM0200" "$(get_text "$HM0013" "$host_ident")" "" any_key
        return 1
    
    elif [[ $cur_id_rtn -eq 2 ]]; then
        print_message "$HM0200" "$(get_text "$HM0012" "$host_ident")"
        return 1
    fi

    local delete_cmd="$ansible_wrapper -a del"
    delete_cmd=$delete_cmd" --host $cur_id --ip $host_addr"
    if [[ $DEBUG -gt 0 ]]; then
        echo "delete_cmd=$delete_cmd"
    fi
    exec_pool_task "$delete_cmd" "remove host=$host_ident"
}

# remove pool
remove_pool() {
    local delete_task="$ansible_wrapper -a delete_pool"
    [[ $DEBUG -gt 0 ]] && echo "cmd=$delete_task"
    DELETE_INFO=$(eval "$delete_task")
    DELETE_ERR=$(echo "$DELETE_INFO" | grep '^error:' | sed -e 's/^error://')
    DELETE_MSG=$(echo "$DELETE_INFO" | grep '^message:' | sed -e 's/^message://')

    if [[ $DEBUG -gt 0 ]]; then
        echo "DELETE_ERR=$DELETE_ERR"
        echo "DELETE_MSG=$DELETE_MSG"
    fi
    [[ -n "$DELETE_ERR" ]] && return 1
    return 0
}

test_main_module_for_php7(){
    cache_pool_sites
    MAIN_LOWER_VERSION="16.0.10"     # for all modules 16.5.0 
    MAIN_U=$(echo $MAIN_LOWER_VERSION | awk -F'.' '{print $1}')
    MAIN_M=$(echo $MAIN_LOWER_VERSION | awk -F'.' '{print $2}')
    MAIN_L=$(echo $MAIN_LOWER_VERSION | awk -F'.' '{print $3}')

    TEST_PHP7_PASS=
    TEST_PHP7_PASS_CNT=0
    TEST_PHP7_NOTPASS=
    TEST_PHP7_NOTPASS_CNT=0
    TEST_PHP7_SKIP=
    TEST_PHP7_SKIP_CNT=0
    TEST_PHP7_CNT=0
    IFS_BAK=$IFS
    IFS=$'\n'
    for line in $POOL_SITES_KERNEL_LIST; do
        TEST_PHP7_CNT=$(( $TEST_PHP7_CNT + 1 ))
        local t_site_name=$(echo "$line" | awk -F':' '{print $1}' | sed -e "s/\s\+//g")
        local t_site_status=$(echo "$line" | awk -F':' '{print $4}' | sed -e "s/\s\+//g")
        local t_main_vers=$(echo "$line" | awk -F':' '{print $13}' | sed -e "s/\s\+//g")
        if [[ $DEBUG -gt 0 ]]; then
            echo "+++++++++"
            echo "$t_site_name -> $t_main_vers"
        fi
        # we estimate only complete installation
        if [[ $t_site_status == "finished" ]]; then
            if [[ $t_main_vers == "" ]]; then
                TEST_PHP7_SKIP="$TEST_PHP7_SKIP $t_site_name"
                TEST_PHP7_SKIP_CNT=$(( $TEST_PHP7_SKIP_CNT + 1  ))
            else
                local t_u_ver=$(echo $t_main_vers | awk -F'.' '{print $1}')
                local t_m_ver=$(echo $t_main_vers | awk -F'.' '{print $2}')
                local t_l_ver=$(echo $t_main_vers | awk -F'.' '{print $3}')

                if [[ $t_u_ver -gt $MAIN_U ]]; then
                    TEST_PHP7_PASS="$TEST_PHP7_PASS $t_site_name"
                    TEST_PHP7_PASS_CNT=$(( $TEST_PHP7_PASS_CNT + 1 ))
                elif [[ $t_u_ver -eq $MAIN_U ]]; then
                    if [[ $t_m_ver -gt $MAIN_M ]]; then
                        TEST_PHP7_PASS="$TEST_PHP7_PASS $t_site_name"
                        TEST_PHP7_PASS_CNT=$(( $TEST_PHP7_PASS_CNT + 1  ))
                    elif [[ $t_m_ver -eq $MAIN_M ]]; then
                        if [[ $t_l_ver -gt $MAIN_L ]]; then
                            TEST_PHP7_PASS="$TEST_PHP7_PASS $t_site_name"
                            TEST_PHP7_PASS_CNT=$(( $TEST_PHP7_PASS_CNT + 1   ))
                        else
                            TEST_PHP7_NOTPASS="$TEST_PHP7_NOTPASS $t_site_name/$t_main_vers"
                            TEST_PHP7_NOTPASS_CNT=$(( $TEST_PHP7_NOTPASS_CNT +1 ))
                        fi
                    else
                        TEST_PHP7_NOTPASS="$TEST_PHP7_NOTPASS $t_site_name/$t_main_vers"
                        TEST_PHP7_NOTPASS_CNT=$(( $TEST_PHP7_NOTPASS_CNT +1  ))
                    fi
                else
                    TEST_PHP7_NOTPASS="$TEST_PHP7_NOTPASS $t_site_name/$t_main_vers"
                    TEST_PHP7_NOTPASS_CNT=$(( $TEST_PHP7_NOTPASS_CNT +1   ))
                fi
            fi
       else
           # errors and not_installed sites
           TEST_PHP7_SKIP="$TEST_PHP7_SKIP $t_site_name"
           TEST_PHP7_SKIP_CNT=$(( $TEST_PHP7_SKIP_CNT + 1 ))
       fi
   done
   IFS=$IFS_BAK
   IFS_BAK=

   if [[ $DEBUG -gt 0 ]]; then
       echo "$HM0014($TEST_PHP7_PASS_CNT): $TEST_PHP7_PASS"
       echo "$HM0015($TEST_PHP7_NOTPASS_CNT): $TEST_PHP7_NOTPASS"
       echo "$HM0016($TEST_PHP7_SKIP_CNT): $TEST_PHP7_SKIP"
   fi

   [[ $TEST_PHP7_NOTPASS_CNT -gt 0 ]] && return 2
   [[ $TEST_PHP7_SKIP_CNT -gt 0 ]] && return 1
   return 0
}

# return
#   0 - upgrade to 5.4 version
#   1 - upgrade to 5.6 version
#   255 - upgrade is not possible 
# PHP_MESSAGE - error message if return code is 255
# PHP_VERSION - current php version
test_php_version(){
    local host_ident="${1:-localhost}"
    local host_info="$2"                # bx_variables for hosts (requested ones and can be reused)

    PHP_MESSAGE=
    PHP_VERSION=
    if [[ $DEBUG -gt 0 ]]; then
        echo "host_ident=$host_ident"
        echo "host_info=$host_info"
    fi

    # if we don't pass variable to the function we will request data
    if [[ -z "$host_info" ]]; then
        host_info=$($ansible_wrapper -a bx_info -H $host_ident)
        PHP_VERSION=$(echo "$host_info" | awk -F':' '{print $8}')
    else
        PHP_VERSION=$(echo "$host_info" | awk -F':' '{print $13}')
    fi

    # php package is not found in the system
    if [[ -z $PHP_VERSION ]]; then
        PHP_MESSAGE="$(get_text "$HM0017" "php")"
        return 255
    fi

    # split php version 5.4.32 to separate values
    local php_upper=$(echo "$PHP_VERSION" | awk -F'.' '{print $1}')
    local php_middle=$(echo "$PHP_VERSION" | awk -F'.' '{print $2}')
    local php_lower=$(echo "$PHP_VERSION" | awk -F'.' '{print $3}')

    # test versions
    if [[ $php_upper -lt 5 ]]; then
        PHP_MESSAGE="$(get_text "$HM0018" "$php_upper.$php_middle")"
        return 255
    elif [[ $php_upper -eq 5 ]]; then
        if [[ $php_middle -lt 3 ]]; then
            PHP_MESSAGE="$(get_text "$HM0018" "$php_upper.$php_middle")"
            return 255
        elif [[ $php_middle -eq 3 ]]; then
            PHP_MESSAGE=$(get_text "$HM0019" "5.4")
            return 0
        elif [[ $php_middle -eq 4 ]]; then
            PHP_MESSAGE=$(get_text "$HM0019" "5.6")
            return 1
        elif [[ $php_middle -gt 4 ]]; then
            PHP_MESSAGE=$(get_text "$HM0019" "7.0")
            return 2
        else
            PHP_MESSAGE="$HM0020"
            return 255
        fi
    elif [[ $php_upper -eq 7 ]]; then
        PHP_MESSAGE="$(get_text "$HM0021" "5.6")"
        return 3${php_middle}
    else
        PHP_MESSAGE="$HM0020"
        return 255
    fi
}

# return
#   0 - upgrade to 5.5 version
#   2 - the latest version
#   1 - upgrade to 5.7 version
#   255 - upgrade is not possible 
# MYSQL_MESSAGE - error message if return code is 255
# MYSQL_VERSION - current mysql version
test_mysql_version(){
    local host_ident="${1:-localhost}"
    local host_info="$2"                # bx_variables for hosts (requested ones and can be reused)

    MYSQL_MESSAGE=
    MYSQL_VERSION=
    if [[ $DEBUG -gt 0 ]]; then
        echo "host_ident=$host_ident"
        echo "host_info=$host_info"
    fi

    # if we don't pass variable to the function we will request data
    if [[ -z "$host_info" ]]; then
        host_info=$($ansible_wrapper -a bx_info -H $host_ident)
        MYSQL_VERSION=$(echo "$host_info" | awk -F':' '{print $7}')
    else
        MYSQL_VERSION=$(echo "$host_info" | awk -F':' '{print $12}')
    fi

    # php package is not found in the system
    if [[ -z $MYSQL_VERSION ]]; then
        MYSQL_MESSAGE="$(get_text "$HM0017" "mysql")"
        return 255
    fi

    # split php version 5.4.32 to separate values
    local mysql_upper=$(echo "$MYSQL_VERSION" | awk -F'.' '{print $1}')
    local mysql_middle=$(echo "$MYSQL_VERSION" | awk -F'.' '{print $2}')
    local mysql_lower=$(echo "$MYSQL_VERSION" | awk -F'.' '{print $3}')

    # test versions
    if [[ $mysql_upper -lt 5 ]]; then
        MYSQL_MESSAGE="$(get_text "$HM0022" "$mysql_upper.$mysql_middle")"
        return 255
    elif [[ $mysql_upper -eq 5 ]]; then
        if [[ $mysql_middle -lt 1 ]]; then
            MYSQL_MESSAGE="$(get_text "$HM0022" "$mysql_upper.$mysql_middle")"
            return 255
        elif [[ $mysql_middle -eq 1 ]]; then
            MYSQL_MESSAGE="$(get_text "$HM0023" "5.5")"
            return 0
        elif [[ $mysql_middle -eq 5 ]]; then
            MYSQL_MESSAGE="$(get_text "$HM0023" "5.7")"
            return 1
        elif [[ $mysql_middle -gt 5 ]]; then
            MYSQL_MESSAGE="$HM0025 ($mysql_upper.$mysql_middle)"
            return 2
        else
            MYSQL_MESSAGE="$HM0024"
            return 255
        fi
    else
        MYSQL_MESSAGE="$(get_text "$HM0022" "$mysql_upper.$mysql_middle")"
        return 255
    fi

}

# return 
#   0  => can use upgrade function (upgrade php to 5.4 and mysql to 5.5)
#   1  => can upgrade php from 5.4 to 5.5
#   255 => upgrade is not possible
# CLUSTER_MESSAGE - reason why not
# CLUSTER_RTN  - version on all cluster host is the same or not
test_upgrade_on_cluster() {
    [[ -z $POOL_SERVER_LIST ]] && cache_pool_info
    [[ -z $BITRIX_ENV_TYPE ]] && get_os_type
    CLUSTER_MESSAGE=
    CLUSTER_RTN=53
    CLUSTER_HOSTS=

    # found server is not connected to the cluster
    if [[ -n "$POOL_UNU_SERVER_LIST" ]]; then
        server_list=$(echo "$POOL_UNU_SERVER_LIST" | \
            awk -F':' '{printf "%s, ", $1}' | sed -e 's/, $//')
        CLUSTER_MESSAGE=$(get_text "$HM0026" "$server_list")
        return 255
    else
        # test mysql and php versions
        IFS_BAK=$IFS
        IFS=$'\n'
        for srv_info in $POOL_SERVER_LIST; do
            srv_name=$(echo "$srv_info" | awk -F':' '{print $1}')
            # 0, 1, 255
            test_mysql_version "$srv_name" "$srv_info"
            test_mysql_version_rtn=$?

            # 0, 1, 2, 3, 255
            test_php_version "$srv_name" "$srv_info"
            test_php_version_rtn=$?

           
            if [[ $DEBUG -gt 0 ]]; then
                echo "$srv_name mysql_test rtn=$test_mysql_version_rtn: $MYSQL_MESSAGE"
                echo "$srv_name php_test   rtn=$test_php_version_rtn: $PHP_MESSAGE"
            fi

            union_res=255

            # mysql version is 5.1
            if [[ $test_mysql_version_rtn -eq 0 ]]; then
                # php version 5.3 or 5.4
                [[ $test_php_version_rtn -eq 0 || $test_php_version_rtn -eq 1 ]] && union_res=0
            # mysql version 5.5
            elif [[ $test_mysql_version_rtn -eq 1 ]]; then

                # php version 5.4
                if [[ $test_php_version_rtn -eq 1 ]]; then
                    union_res=1

                # php version 5.3
                elif [[ $test_php_version_rtn -eq 0 ]]; then
                    union_res=1

                # php version > 5.4
                elif [[ $test_php_version_rtn -eq 2 ]]; then
                    union_res=21

                # php version 7.0, 7.1, 7.2
                elif [[ $test_php_version_rtn -ge 30 ]]; then
                    union_res=$(( $test_php_version_rtn + 20  ))

                # error (unexpected situation)
                else
                    union_res=255
                    CLUSTER_RTN=255
                    CLUSTER_MESSAGE=$CLUSTER_MESSAGE"
                    $srv_name php version: $PHP_MESSAGE"
                fi

            # mysql version 5.6 or 5.7
            elif [[ $test_mysql_version_rtn -eq 2 ]]; then

                # php version 5.4 (not supported case; manual configuration)
                if [[ $test_php_version_rtn -eq 1 ]]; then
                    union_res=255
                    CLUSTER_RTN=255
                    CLUSTER_MESSAGE=$CLUSTER_MESSAGE"
                    $srv_name php version: $PHP_MESSAGE"

                # php version 5.3 (not supported case; manual configuration)
                elif [[ $test_php_version_rtn -eq 0 ]]; then
                    union_res=255
                    CLUSTER_RTN=255
                    CLUSTER_MESSAGE=$CLUSTER_MESSAGE"
                    $srv_name php version: $PHP_MESSAGE"

                # php version > 5.4
                elif [[ $test_php_version_rtn -eq 2 ]]; then
                    union_res=31

                # php version 7.0
                elif [[ $test_php_version_rtn -ge 30 ]]; then
                    union_res=$(( $test_php_version_rtn + 10 ))

                # error (unexpected situation)
                else
                    union_res=255
                    CLUSTER_RTN=255
                    CLUSTER_MESSAGE=$CLUSTER_MESSAGE"
                    $srv_name php version: $PHP_MESSAGE"
                fi

            else
                CLUSTER_RTN=255
                CLUSTER_MESSAGE=$CLUSTER_MESSAGE"
                $srv_name mysql version: $MYSQL_MESSAGE"
            fi
            CLUSTER_HOSTS=$CLUSTER_HOSTS"$srv_name:$union_res "
           
        done
        CLUSTER_HOSTS=$(echo "$CLUSTER_HOSTS" | sed -e "s/^\s\+//;s/\s\+$//")

        IFS=$IFS_BAK
        IFS_BAK=
        if [[ $DEBUG -gt 0 ]]; then
            echo "Cluster tests: $CLUSTER_HOSTS"
        fi

        # if one with error => return error
        [[ $CLUSTER_RTN -eq 255 ]] && return $CLUSTER_RTN

        # all host must be in the same version
        # CLUSTER_HOSTS contains host1:version host2:version
        local host_version=
        for host_test in $CLUSTER_HOSTS; do
            host_version=$(echo "$host_test" | awk -F':' '{print $2}')
            if [[ $host_version -lt $CLUSTER_RTN ]]; then
                CLUSTER_RTN=$host_version
            fi
        done
        [[ $DEBUG -gt 0 ]] && \
            echo "CLUSTER_RTN=$CLUSTER_RTN"

        # there is update for mysql server
        if [[ $CLUSTER_RTN -eq 0 ]]; then
            mysql_service_number=$(echo "$POOL_SERVER_LIST" | \
                awk -F':' '{print $3}' | grep -c mysql)
            if [[ $mysql_service_number -gt 1 ]]; then
                CLUSTER_MESSAGE="$HM0028 ($mysql_service_number)"
                CLUSTER_RTN=255
            fi
        fi

        # there is update for php7 version
        if [[ $CLUSTER_RTN -eq 21 || $CLUSTER_RTN -eq 31 ]]; then
            # testing sites for main module version
            # 0, 1, 2
            test_main_module_for_php7
            test_main_module_for_php7_rtn=$?
            if [[ $test_main_module_for_php7_rtn -gt 1 ]]; then
                CLUSTER_MESSAGE="$(get_text "$HM0029" "$MAIN_LOWER_VERSION")"
                CLUSTER_MESSAGE=$CLUSTER_MESSAGE"
                $HM0030: $TEST_PHP7_NOTPASS"
                CLUSTER_RTN=255
            elif [[ $test_main_module_for_php7_rtn -gt 0 ]]; then
                CLUSTER_MESSAGE="$HM0031"
                CLUSTER_MESSAGE=$CLUSTER_MESSAGE"
                $TEST_PHP7_SKIP"
            fi
        fi
    fi

    return $CLUSTER_RTN
}



Zerion Mini Shell 1.0