#!/bin/bash ## ThomX environment verification script for computers managed by control-command team ## BEWARE : this script does not assure that configuration is correct, ## it is just a fast method to check if elements are bad configured ## continue when an error is encountered set +e ## Set to 1 to print every message DEBUG=1 cd "$(dirname "$0")" REPO_DIR=$(pwd)/ ## Getting printing functions source "${REPO_DIR}/utils.sh" ## Getting global variables source "${REPO_DIR}/globals.sh" ## Getting installation settings source "${REPO_DIR}/installation_parameters.sh" if [ "${DEBUG}" -eq 1 ] then info "Installation settings" echo "DOWNLOAD_ONLY=${DOWNLOAD_ONLY}" echo "DEPENDENCIES=${DEPENDENCIES}" echo "DATABASE=${DATABASE}" echo "TANGO=${TANGO}" echo "CLIENT=${CLIENT}" echo "TANGO_DB=${TANGO_DB}" echo "ARCHIVING=${ARCHIVING}" echo fi ### Checking and correcting of initial configuration ## ${SERVERNAME} == ${TANGOSERVER} -> TANGO-DB=1 if [ "${DEPENDENCIES}" -eq 1 ] \ && [ "${SERVERNAME}" == "${TANGOSERVER}" ] \ && [ "${TANGO_DB}" -eq 0 ] then warning "${SERVERNAME} == ${TANGOSERVER}, TANGO_DB will be be considered set." TANGO_DB=1 fi ## ARCHIVING=1 -> DATABASE=1 if [ "${DEPENDENCIES}" -eq 1 ] \ && [ "${DATABASE}" -eq 0 ] \ && [ "${ARCHIVING}" -eq 1 ] then warning "installation of ARCHIVING asked, DATABASE will be considered set." DATABASE=1 fi ## CLIENT=1 -> TANGO=1 if [ "${DEPENDENCIES}" == 1 ] \ && [ "${CLIENT}" -eq 1 ] then warning "installation of CLIENT asked, TANGO will be considered set." TANGO=1 fi ## TANGO_DB=1 -> TANGO=1 & DATABASE=1 if [ "${DEPENDENCIES}" -eq 1 ] \ && [ "${TANGO_DB}" -eq 1 ] then if [ "${TANGO}" -eq 0 ] then warning "installation of TANGO_DB asked, TANGO will be considered set." TANGO=1 fi if [ "${DATABASE}" -eq 0 ] then warning "installation of TANGO_DB asked, DATABASE will be considered set." DATABASE=1 fi fi ## global variable definition CORRECT_TANGO_HOST="srv-2.thomx.fr:20000" ERROR=0 typeset -a PAQUETS_PIP PAQUETS_VERSION ## pip packages PIP_PACKAGES_NUMBER=4 ## test #PIP_PACKAGES_NUMBER=5 PIP_PACKAGES=( [0]="fandango" [1]="taurus" [2]="PyYAML" [3]="QtPy" ## test # [3]="test_pip" ) ## pip packages version PIP_PACKAGES_VERSION=( [0]="13.9.0" [1]="4.4.0" [2]="3.13" [3]="1.2.1" ## test # [3]="1.2.2test" ) DEBIAN_PACKAGES="python-qt4 python-qwt5-qt4 python-qtpy qt4-designer pyqt4-dev-tools" ## test #DEBIAN_PACKAGES="test python-qt4 python-qwt5-qt4 python-qtpy qt4-designer pyqt4-dev-tools" DEBIAN_PACKAGES_CLIENT="ntpdate libx32gcc-6-dev libgl1-mesa-dev:i386 libxinerama1:i386" ### INSTALLATION TEST ## DATABASE if [ "${DATABASE}" -eq 1 ] then OUTPUT_DPKG=$(dpkg -s mariadb-server | grep Status) if [ "${OUTPUT_DPKG}" == "Status: install ok installed" ] then if [ "${DEBUG}" -eq 1 ] then info "DB server installed" fi DBSERVER_INSTALLED=1 else warning "DB server not installed!" DBSERVER_INSTALLED=0 fi OUTPUT_DPKG=$(dpkg -s mariadb-client | grep Status) if [ "${OUTPUT_DPKG}" == "Status: install ok installed" ] then if [ "${DEBUG}" -eq 1 ] then info "DB client installed" fi DBCLIENT_INSTALLED=1 else warning "DB client not installed!" DBCLIENT_INSTALLED=0 fi /usr/sbin/service mysql status &> /dev/null && DATABASE_RUNNING=1 if [ "${DBCLIENT_INSTALLED}" -eq 1 ] \ && [ "${DBSERVER_INSTALLED}" -eq 1 ] \ && [ "${DATABASE_RUNNING}" -eq 1 ] then if [ "${DEBUG}" -eq 1 ] then info "DATABASE running" fi else warning "DATABASE not running!" fi fi ##TANGO_DB if [ "${TANGO_DB}" -eq 1 ] then echo "Following asked password is MariaDB password for tango database" RESULT_DATABASE=$(mysql -h "${TANGOSERVER}" -u tango tango -p -e "SHOW tables") if [ "${RESULT_DATABASE}" != "${CORRECT_OUTPUT_DATABASE}" ] then if [ "${DEBUG}" -eq 1 ] then info "DATABASE successfully installed" fi else warning "DATABASE installation failed!" fi fi ## TANGO if [ "${TANGO}" -eq 1 ] then ### yat & yat4tango if [ -d /usr/include/yat ] \ && [ -d /usr/include/yat4tango ] \ && [ -e /usr/lib/libyat.so ] \ && [ -e /usr/lib/libyat4tango.so ] then if [ "${DEBUG}" -eq 1 ] then info "yat & yat4tango successfully installed" fi else warning "yat & yat4tango installation failed!" fi ### Environment settings ## python : python -V >= 2.7 and < 3 if [[ ! $(python -V 2>&1) == "Python 2.7"* ]] then warning "Python is not installed in version 2.7" ERREUR=2 else if [ "${DEBUG}" -eq 1 ] then info "Python is not in version 2.7" fi fi ## Check package installation of packages needed for taurus ## fandango==13.9.0 taurus==4.4.0 PyYAML==3.13 QtPy==1.2.1 python-qt4 python-qwt5-qt4 python-qtpy qt4-designer pyqt4-dev-tools for ((package=0;package /dev/null && COMMAND_VERSION_INCORRECT=0 if [ "${COMMAND_VERSION_INCORRECT}" -ne 0 ] then warning "pip package ${PIP_PACKAGES[$package]} is not installed with version ${PIP_PACKAGES_VERSION[$package]}" else if [ "${DEBUG}" -eq 1 ] then info "pip package ${PIP_PACKAGES[$package]} is installed with version ${PIP_PACKAGES_VERSION[$package]}" fi fi fi done ## Checking debian packages installation for package in ${DEBIAN_PACKAGES} do DEBIAN_PACKAGE_NOT_INSTALLED=1 dpkg -l | grep ^ii | grep "${package} " > /dev/null && DEBIAN_PACKAGE_NOT_INSTALLED=0 if [ "$?" -ne 0 ] then warning "debian package ${package} is not installed" else if [ "${DEBUG}" -eq 1 ] then info "debian package ${package} is installed" fi fi done ### Java version #### check if Java is not openjdk if [[ $(java -version 2>&1) != *"OpenJDK"* ]] then if [ "${DEBUG}" -eq 1 ] then info "Sun Java JDK successfully installed" fi else warning "OpenJDK Java has been installed" fi ### TangoTest #### if TangoTest/test is not defined TANGOTEST_DS_UNDEFINED=1 /usr/lib/tango/tango_admin --check-server TangoTest/test && TANGOTEST_DS_UNDEFINED=0 if [ ${TANGOTEST_DS_UNDEFINED} -ne 0 ] then warning "TangoTest Device Server is not defined" else if [ "${DEBUG}" -eq 1 ] then info "TangoTest Device Server is defined" fi fi #### if sys/tg_test/1 is not defined TANGOTEST_DEVICE_UNDEFINED=1 /usr/lib/tango/tango_admin --check-device sys/tg_test/1 && TANGOTEST_DEVICE_UNDEFINED=0 if [ "${TANGOTEST_DEVICE_UNDEFINED}" -ne 0 ] then warning "sys/tg_test/1 device is not defined" else if [ "${DEBUG}" -eq 1 ] then info "sys/tg_test/1 device is defined" fi fi #### if TangoTest/test does not respond to ping TANGOTEST_DEVICE_UNREACHABLE=1 /usr/lib/tango/tango_admin --ping-device sys/tg_test/1 && TANGOTEST_DEVICE_UNREACHABLE=0 if [ "${TANGOTEST_DEVICE_UNREACHABLE}" -ne 0 ] then ## starts TangoTest device for instance test /usr/lib/tango/TangoTest test & > /dev/null sleep 1 TANGOTEST_DEVICE_UNREACHABLE2=1 /usr/lib/tango/tango_admin --ping-device sys/tg_test/1 && TANGOTEST_DEVICE_UNREACHABLE2=0 if [ "${TANGOTEST_DEVICE_UNREACHABLE2}" -ne 0 ] then warning "TangoTest/test does not respond to ping" else if [ "${DEBUG}" -eq 1 ] then info "TangoTest/test has been started" fi fi else if [ "${DEBUG}" -eq 1 ] then info "TangoTest/test started" fi fi ### Checking TANGO_HOST source /etc/tangorc if [ "${TANGO_HOST}" == "${CORRECT_TANGO_HOST}" ] then if [ "${DEBUG}" -eq 1 ] then info "TANGO_HOST correctly set to ${TANGO_HOST}" fi else warning "TANGO_HOST is not defined to '${CORRECT_TANGO_HOST}' but to '${TANGO_HOST}'" fi fi ### CLIENT if [ "${CLIENT}" -eq 1 ] then ### libzmq libraries (temporary) if [ -d /data/shared/lib/ ] \ && [ -e /data/shared/lib/libzmq.so ] \ && [ -e /data/shared/lib/libzmq.so.5 ] \ && [ -e /data/shared/lib/libzmq.so.5.2.1 ] then if [ "${DEBUG}" -eq 1 ] then info "local (temporary) libzmq successfully installed" fi else warning "local (temporary) libzmq installation failed!" fi ### labview libraries if [ -d /data/shared/lib/ ] \ && [ -d /data/shared/lib/labview ] \ && [ -d /data/shared/lib/labview/LabVIEW-2014 ] \ && [ -d /data/shared/lib/labview/runtime ] then if [ "${DEBUG}" -eq 1 ] then info "local LabView libraries for GUI successfully installed" fi else warning "local LabView libraries for GUI installation failed!" fi ## Checking debian packages installation for package in ${DEBIAN_PACKAGES_CLIENT} do DEBIAN_PACKAGE_NOT_INSTALLED=1 dpkg -l | grep ^ii | grep "${package} " > /dev/null && DEBIAN_PACKAGE_NOT_INSTALLED=0 if [ "$?" -ne 0 ] then warning "debian package ${package} is not installed" else if [ "${DEBUG}" -eq 1 ] then info "debian package ${package} is installed" fi fi done fi ## matlab : check that matlab is 2018b version ## toolbox : Hayg will define which version has to be installed ## Hayg will define what command can be used and what result should be returned ## tango-binding : Hayg will tell what command can be use and what result should be returned ## TANGO_HOST_PROD or TANGO_HOST_DEV : Hayg will tell what command ## can be use and what result should be returned # /etc/hosts echo echo "Contents of /etc/hosts/:" echo "-----" cat /etc/hosts echo "-----" # /etc/tangorc echo echo "Contents of /etc/tangorc/:" echo "-----" cat /etc/tangorc echo "-----" if [ "${TANGO}" -eq 1 ] then # atkpanel echo info "La fenêtre qui s'affiche doit avoir un statut vert" echo "Starting sys/database/2 ATKPanel" atkpanel sys/database/2 fi