diff --git a/bin/foamSystemCheck b/bin/foamSystemCheck index 27b7242d797e31fa0ec4cc33ca2288ea01020d98..5b8d33574a74d31c7bc75c6dd1ba84f633bac397 100755 --- a/bin/foamSystemCheck +++ b/bin/foamSystemCheck @@ -1,4 +1,4 @@ -#!/bin/sh -u +#!/bin/sh #------------------------------------------------------------------------------ # ========= | # \\ / F ield | OpenFOAM: The Open Source CFD Toolbox @@ -28,37 +28,35 @@ # # Description # Checks the machine system and the user's -# personal configuration for running FOAM. +# personal configuration for running OpenFOAM. # #------------------------------------------------------------------------------ -TMPTAB=tmptab.$$ -LOG=log.$0 -HLINE="-----------------------------------------------------------------------" +# STATIC VARIABLES +# ~~~~~~~~~~~~~~~~ +FOAM_VERSION=1.5 -FATALERROR=0 -SSHRSHOK=0 -WIDTH=20 -FOAM_VERSION=1.4.1 -OS=`uname -s` +HLINE="-----------------------------------------------------------------------" +WIDTH=16 +unset FATALERROR -#FUNCTIONS -#~~~~~~~~~ +# FUNCTIONS +# ~~~~~~~~~ heading () { - echo "" echo "" echo "$1" echo "$HLINE" } lenBase () { -echo $1 | tr -d " " | wc -m | tr -d " " + echo $1 | tr -d " " | wc -m | tr -d " " } length () { - NOCHAR=`lenBase $1` - NOCHAR=`expr $NOCHAR - 1` - if [ $NOCHAR -eq -1 ]; then + NOCHAR=$(lenBase $1) + NOCHAR=$(expr $NOCHAR - 1) + if [ $NOCHAR -eq -1 ] + then NOCHAR=0 fi echo $NOCHAR @@ -66,197 +64,106 @@ length () { fixlen () { WORD=$1 - ONELEN=`length "$1"` - LDIFF=`expr $ONELEN - $2` - if [ $LDIFF -le 1 ]; then - while [ $LDIFF -lt 0 ] ; do + ONELEN=$(length "$1") + LDIFF=$(expr $ONELEN - $2) + if [ $LDIFF -le 1 ] + then + while [ $LDIFF -lt 0 ] + do WORD="$WORD " - LDIFF=`expr $LDIFF + 1` + LDIFF=$(expr $LDIFF + 1) done echo "$WORD" else - LDIFF=`expr $LDIFF + 4` - WORD=`echo "$WORD" | cut -c${LDIFF}-` + LDIFF=$(expr $LDIFF + 4) + WORD=$(echo "$WORD" | cut -c${LDIFF}-) echo "...${WORD}" fi } +# MAIN CODE +# ~~~~~~~~~ +heading "Checking basic system..." -checkSetup () { -cat <<EOF -Host: $HOST_NAME -OS: $OS -OS_version: $OS_VERSION -Shell: $USER_SHELL -User: $USER_NAME -EOF -} - -checkNetworking () { -pingTest $HOST_NAME -pingTest localHost -checkRsh -checkSsh -} - -pingTest () { -case $OS in - SunOS) - if [ -x '/usr/sbin/ping' ] ; then - PINGTEST=`/usr/sbin/ping $1 2>&1` - if [ -n "`echo $PINGTEST | grep 'alive'`" ] ; then - RESULT="Successful" - elif [ -n "`echo $PINGTEST | grep 'unknown host'`" ] ; then - RESULT="Unknown_host" - else - RESULT="Networking_not_set" - fi - else - RESULT="Ping_not_installed_in_usual_path" - fi - ;; - *) - if [ -x '/bin/ping' ] ; then - PINGTEST=`/bin/ping -w 3 -c 1 $1 2>&1` - if [ -n "`echo $PINGTEST | grep '1 received'`" ] ; then - RESULT="Successful" - elif [ -n "`echo $PINGTEST | grep 'unknown host'`" ] ; then - RESULT='Unknown host' - else - RESULT='Networking not set' - fi - else - RESULT="Ping_not_installed_in_usual_path" - fi - ;; +# check shell +echo "$(fixlen "Shell:" $WIDTH) $SHELL" +case "$SHELL" in +*/csh | */tcsh) + USER_CONFIG_TYPE=cshrc + ;; +*/bash | */ksh) + USER_CONFIG_TYPE=bashrc + ;; +*) + USER_CONFIG_TYPE="" + echo "FATALERROR: Cannot identify the current shell." + echo " OpenFOAM ${FOAM_VERSION} is compatible" + echo " with csh, tcsh, ksh and bash." + echo + FATALERROR=yes + ;; esac -echo "`fixlen "Ping_$1:" $WIDTH` $RESULT" -if [ "$RESULT" != 'Successful' ]; then - FATALERROR=`expr $FATALERROR + 1` -fi - -} - -telnetPortTest () { -telnet -e A $1 $2 <<EOF -A -quit -EOF -} - -checkTelnetPort () { -if [ -x "/usr/bin/telnet" ] || [ -x "/bin/telnet" ] ; then - RESULT=`telnetPortTest $1 $2 2>&1 | egrep "onnect.* [t|r]"` - if [ "`echo $RESULT | grep 'Connected to'`" ] ; then - RESULT='Successful' - elif [ "`echo $RESULT | grep 'Connection refused'`" ] ; - then - RESULT='Unsuccessful, connection refused*' - else - RESULT="Not active*" - fi -else - RESULT='No_telnet_running:_cannot_check*' -fi -} - -checkRsh () { -checkTelnetPort $HOST_NAME 222 -echo "`fixlen "Test_rsh:" $WIDTH` $RESULT" -if [ "$RESULT" != 'Successful' ]; then - SSHRSHOK=`expr $SSHRSHOK + 1` -fi -} - -checkSsh () { -checkTelnetPort $HOST_NAME 22 -echo "`fixlen "Test_ssh:" $WIDTH` $RESULT" -if [ "$RESULT" != 'Successful' ]; then - SSHRSHOK=`expr $SSHRSHOK + 1` -fi -} - -expenv () { - eval "echo $1" -} - -#MAIN CODE -#~~~~~~~~~ -HOST_NAME=`uname -n` -OS=`uname -s` -OS_VERSION=`uname -r` -USER_SHELL=`basename $SHELL` -USER_NAME=$LOGNAME -# -if [ `length $USER_NAME` -eq 0 ] ; then - USER_NAME=$USER -fi -# -WIDTH=20 -heading "Checking basic system..." -case $USER_SHELL in - csh|tcsh) USER_CONFIG_TYPE=cshrc - echo "`fixlen "Shell:" $WIDTH` $USER_SHELL" - ;; - bash|ksh) USER_CONFIG_TYPE=bashrc - echo "`fixlen "Shell:" $WIDTH` $USER_SHELL" - ;; - *) USER_CONFIG_TYPE="" - echo "`fixlen "Shell:" $WIDTH` $USER_SHELL" - echo "FATALERROR: Cannot identify the current shell." - echo " Foam ${FOAM_VERSION} is compatible" - echo " with csh, tcsh, ksh and bash." - echo - FATALERROR=`expr $FATALERROR + 1`;; -esac -# -if [ `length $HOST_NAME` -eq 0 ]; then - echo "`fixlen "Host:" $WIDTH` ${HOST_NAME}" +# check hostname +HOST=$(uname -n) +echo "$(fixlen "Host:" $WIDTH) $HOST" +if [ $(length $HOST) -eq 0 ] +then echo "FATALERROR: Cannot stat hostname." - echo " Foam ${FOAM_VERSION} needs a valid hostname to function." + echo " OpenFOAM ${FOAM_VERSION} needs a valid hostname to function." echo " Contact your system administrator. " echo - FATALERROR=`expr $FATALERROR + 1` -else - echo "`fixlen "Host:" $WIDTH` ${HOST_NAME}" + FATALERROR=yes fi -# -if [ "$OS" = "Linux" ] || [ "$OS" = "LinuxAMD64" ] || [ "$OS" = "SunOS" ]; then - echo "`fixlen "OS:" $WIDTH` ${OS} version ${OS_VERSION}" -else + +# check os +OS=$(uname -s) +case "$OS" in +Linux | LinuxAMD64 | SunOS ) + echo "$(fixlen "OS:" $WIDTH) ${OS} version $(uname -r)" + ;; +*) echo "FATALERROR: Incompatible operating system \"$OS\"." - echo " Foam${FOAM_VERSION} is currently available for " + echo " OpenFOAM ${FOAM_VERSION} is currently available for " echo " Linux, LinuxAMD64 and SunOS only." echo - FATALERROR=`expr $FATALERROR + 1` + FATALERROR=yes + ;; +esac + + +# check user name +USER_NAME=$LOGNAME +if [ $(length $USER_NAME) -eq 0 ] +then + USER_NAME=$USER fi -# -if [ `length $USER_NAME` -eq 0 ]; then - echo "`fixlen "User:" $WIDTH` ${USER_NAME}" + +echo "$(fixlen "User:" $WIDTH) ${USER_NAME}" +if [ $(length $USER_NAME) -eq 0 ] +then echo "FATALERROR: Cannot stat user name ${USER_NAME}." - echo " Foam${FOAM_VERSION} needs a valid user name." + echo " OpenFOAM ${FOAM_VERSION} needs a valid user name." echo " Contact your system administrator. " echo "" - FATALERROR=`expr $FATALERROR + 1` -else - echo "`fixlen "User:" $WIDTH` ${USER_NAME}" + FATALERROR=yes fi -# + echo "" echo "" -if [ $FATALERROR -gt 0 ]; then +if [ -n "$FATALERROR" ] +then echo "System check: FAIL" echo "==================" - echo "Your system is not currently compatible with Foam installation " + echo "Your system is not currently compatible with OpenFOAM installation " echo "requirements. Review the error messages and consult the documentation" echo "for further instructions." echo else echo "System check: PASS" echo "==================" - echo "Continue Foam installation." + echo "Continue OpenFOAM installation." echo fi