diff --git a/check_modules.sh b/check_modules.sh index b8c3a63..135f0d6 100755 --- a/check_modules.sh +++ b/check_modules.sh @@ -1,17 +1,41 @@ #!/bin/bash -l +# +# Christoph Niethammer , (c) 2012 +# +# TODO: +# - check for proper module unloading +# +failed_modules=() -for m in $(module av 2>&1); do +TMP=${TMP:=/tmp} +logfile="check_modules.log" +module_load_logfile="$TMP/.module_load.log" + +echo "Module environment check, $(date)" | tee $logfile + +for m in $(module av -t 2>&1); do if [[ $m =~ ^[A-Za-z] ]]; then - module load $m >.module_load.log 2>&1 - if ! module li 2>&1 | grep $m >/dev/null; then - echo "ERROR: Module $m failed to load" - fi - if grep -i "error" ".module_load.log" >/dev/null; then - echo "ERROR: Module $m reported errors when loading:" - awk '{print " " $0;}' .module_load.log + m=$(echo $m | sed -e 's/(.*)//') + echo -n "Checking $m ... " | tee -a $logfile + module load $m > $module_load_logfile 2>&1 + # check if module was loaded + if module li 2>&1 | grep $m > /dev/null; then + echo "success" | tee -a $logfile + else + echo "failed" | tee -a $logfile + failed_modules=(${failed_modules[@]} $m) + cat .module_load.log | tee -a $logfile fi module purge 2>/dev/null + rm -f $module_load_logfile fi done +echo "----------------------------------------" +echo "Summary of failed modules:" +echo "----------------------------------------" +for m in ${failed_modules[@]}; do + echo "$m" +done +echo "----------------------------------------"