From 9d9a0fcb7830b29c3f9d645d11fa8a53c3921568 Mon Sep 17 00:00:00 2001 From: Martina Vicinanza <martina.vicinanza@inaf.it> Date: Wed, 25 Sep 2024 13:56:42 +0000 Subject: [PATCH] Upload New File --- script/asiago_checkfits.sh | 209 +++++++++++++++++++++++++++++++++++++ 1 file changed, 209 insertions(+) create mode 100644 script/asiago_checkfits.sh diff --git a/script/asiago_checkfits.sh b/script/asiago_checkfits.sh new file mode 100644 index 0000000..8e0a6ea --- /dev/null +++ b/script/asiago_checkfits.sh @@ -0,0 +1,209 @@ +#!/bin/bash + +#: Title : checkfits.sh +#: Date : 2014/10/28 +#: Author : "Marco De Marco" <demarco@oats.inaf.it> +#: Version : 1.0 +#: Description : Fits verification and proccessing script + +#Tools paths +VERIFY_TOOL="/usr/local/bin/fitsverify" +LISTHEAD_TOOL="/usr/local/bin/listhead" +MODHEAD_TOOL="/usr/local/bin/modhead" + +if [ "$1" == "CHECK" ]; then + + #: Section : CHECK + #: Parameter : none + #: Response : CHECK OK + #: : CHECK FATAL + #: Description : Check availability of script tools + + #Check fitsverify tools + CHECK_STRING="conform to the FITS format" + + res=$($VERIFY_TOOL 2>&1) + + check=$(echo $res | grep "$CHECK_STRING" | wc | awk '{print $1}') + if [ "$check" -lt "1" ]; then + echo "CHECK FATAL" + exit 0 + fi + + #Check listhead tools + CHECK_STRING="Usage: listhead filename" + + res=$($LISTHEAD_TOOL 2>&1) + + check=$(echo $res | grep "$CHECK_STRING" | wc | awk '{print $1}') + if [ "$check" -lt "1" ]; then + echo "CHECK FATAL" + exit 0 + fi + + #Check modhead tools + CHECK_STRING="Usage: modhead filename" + + res=$($MODHEAD_TOOL 2>&1) + + check=$(echo $res | grep "$CHECK_STRING" | wc | awk '{print $1}') + if [ "$check" -lt "1" ]; then + echo "CHECK FATAL" + exit 0 + fi + + echo "CHECK OK" + exit 0 + +elif [ "$1" == "VALID" ]; then + + #: Section : VALID + #: Parameter : file path + #: Response : VALID OK + #: : VALID IGNORE + #: Description : Check file name compliance + + file=$2 + file_name=${file##*/} + + #Check regex for rsync temporary file -> ignore + if [[ ! "${file_name,,}" =~ ^[^\.].*\.(fits|fit|fts).*$ ]]; then + echo "VALID IGNORE: invalid regular expression" + exit 0 + fi + + echo "VALID OK" + exit 0 + +elif [ "$1" == "VERIFY" ]; then + + #: Section : VERIFY + #: Parameter : file path + #: Response : VERIFY OK + #: : VERIFY WAIT + #: : VERIFY FATAL + #: Description : Check file compliance to fits format + + file=$2 + + FATAL_ERROR="Fatal" + EOF_ERROR="End-of-file" + + #Change file and permission before processing + /usr/bin/sudo -n /bin/chmod go+r $file + + #if fits verify tools exists -> fatal + if [ ! -x $VERIFY_TOOL ]; then + echo "VERIFY FATAL : verify tools not exists" + exit 0 + fi + + #if fits file not exists -> fatal + if [ ! -f $file ]; then + echo "VERIFY FATAL : file not exists" + exit 0 + fi + + #Check with fits verify + res=$($VERIFY_TOOL $file 2>&1) + + #if fitsverify return fatal error -> wait + fatal=$(echo $res | grep "$FATAL_ERROR" | wc | awk '{print $1}') + if [ "$fatal" -ge "1" ]; then + echo "VERIFY FATAL" + exit 0 + fi + + #if fitsverify return end of file -> wait + eof=$(echo $res | grep "$EOF_ERROR" | wc | awk '{print $1}') + if [ "$eof" -ge "1" ]; then + echo "VERIFY WAIT" + exit 0 + fi + + #else -> ok + echo "VERIFY OK" + exit 0 + +elif [ "$1" == "PREPROCESS" ]; then + + #: Section : PREPROCESS + #: Parameter : file path + #: : ingestion result [OK, WAIT, FATAL] + #: Response : PREPROCESS OK + #: : PREPROCESS FATAL + #: Description : Apply preprocessing before ingestion + + file=$2 + file_name=${file##*/} + + verified=$3 + + #Check verified parameter value + if [ "$verified" != "OK" -a "$verified" != "WAIT" -a "$verified" != "FATAL" ]; then + echo "PREPROCESS FATAL" + exit 0 + fi + + #Pre processing for verified OK files + if [ "$verified" == "OK" ]; then + + #Change file ownership + /usr/bin/sudo -n /bin/chown controls:controls $file + #Change file and permission before processing + /usr/bin/sudo -n /bin/chmod u+rw $file + + #Unpack Schmidt files + if [[ "${file_name##*.}" == fz ]]; then + funpack -D $file + fi #Schmidt files + + + fi #verified ok files + + echo "PREPROCESS OK" + exit 0 + +elif [ "$1" == "POSTPROCESS" ]; then + + #: Section : POSTPROCESS + #: Parameter : file path + #: : ingestion result [OK, WAIT, FATAL] + #: Response : POSTPROCESS OK + #: : POSTPROCESS FATAL + #: Description : Apply postprocessing after ingestion + + file=$2 + file_name=${file##*/} + + verified=$3 + + #Check verified parameter value + if [ "$verified" != "OK" -a "$verified" != "WAIT" -a "$verified" != "FATAL" ]; then + echo "POSTPROCESS FATAL" + exit 0 + fi + + #Post process verified WAIT files + if [ "$verified" == "WAIT" ]; then + echo "Warning file: $file_name" | mutt -s "Pre process log" -- demarco@oats.inaf.it + fi + + #Post process verified FATAL files + if [ "$verified" == "FATAL" ]; then + echo "Fatal file: $file_name" | mutt -s "Pre process log" -- demarco@oats.inaf.it + fi + + echo "POSTPROCESS OK" + exit 0 + +else + + #: Section : DEFAULT + #: Parameter : none + #: Response : UNKNOWN + + echo "UNKNOWN" + exit 0 + +fi \ No newline at end of file -- GitLab