Skip to content
Snippets Groups Projects
Select Git revision
  • 50515931136956048d434a7dc4963b21999f2f45
  • main default protected
  • 1.8.5
  • 1.8.4
  • 1.8.3
  • 1.8.2
  • 1.8.1
  • 1.8.0
  • 1.7.14
  • 1.7.13
  • 1.7.12
  • 1.7.11
  • 1.7.10
  • 1.7.9
  • 1.7.8
  • 1.7.7
  • 1.7.6
  • 1.7.5
  • 1.7.4
  • 1.7.3
  • 1.7.2
  • 1.7.1
22 results

Settings.java

Blame
  • checkfits.sh 6.28 KiB
    #!/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 tec files -> ignore
            if [[ "${file_name,,}" =~ ^.*lbc.?tec.*\.(fits|fit|fts).*$ ]]; then
                    echo "VALID IGNORE: discard tec file"
                    exit 0
            fi
    
    	#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
    
    		#Check regular expression for luci files
    		if [[ "${file_name,,}" =~ ^.*luci.*\.(fits|fit|fts).*$ ]]; then
    
    			#if listhead tools exists -> fatal
    			if [ ! -x $LISTHEAD_TOOL ]; then
    				echo "PREPROCESS FATAL : listhead tools not exists"
    				exit 0
    			fi
    
    			#if modhead tools exists -> fatal
    			if [ ! -x $MODHEAD_TOOL ]; then
    				echo "PREPROCESS FATAL : listhead tools not exists"
    				exit 0
    			fi
    
    			#if fits file not exists -> fatal
    			if [ ! -f $file ]; then
    				echo "PREPROCESS FATAL : file not exists"
    				exit 0
    			fi
    
    			#Change GRATWLEN key from 'not used' to 0.0
    			gratwlen=`$LISTHEAD_TOOL $file 2>&1 | grep -i GRATWLEN`
    			if [[ $gratwlen =~ "'not used'/" ]]; then
    				$MODHEAD_TOOL $file GRATWLEN 0.0 &>/dev/null
    			fi
    
    			#Change GRATORDE key from 'not used' to 0.0
    			gratorde=`$LISTHEAD_TOOL $file 2>&1 | grep -i GRATORDE`
    			if [[ $gratorde =~ "'not used'/" ]]; then
    				$MODHEAD_TOOL $file GRATORDE 0.0 &>/dev/null
    			fi
    		fi #luci files
    
    		#Check regular expression for irt files
    		if [[ "${file_name,,}" =~ ^.*irt.*\.(fits|fit|fts).*$ ]]; then
    
    			#if listhead tools exists -> fatal
    			if [ ! -x $LISTHEAD_TOOL ]; then
    				echo "PREPROCESS FATAL : listhead tools not exists"
    				exit 0
    			fi
    
    			#if modhead tools exists -> fatal
    			if [ ! -x $MODHEAD_TOOL ]; then
    				echo "PREPROCESS FATAL : listhead tools not exists"
    				exit 0
    			fi
    
    			#if fits file not exists -> fatal
    			if [ ! -f $file ]; then
    				echo "PREPROCESS FATAL : file not exists"
    				exit 0
    			fi
    
    			#Search for DATE_OBS keyword
    			res=`$LISTHEAD_TOOL $file 2>&1 | grep DATE_OBS | wc | awk '{print $1}'`
    			if [ $res -eq 0 ]; then
    
    				date=`$LISTHEAD_TOOL $file 2>&1 | grep DATE-OBS`
    				time=`$LISTHEAD_TOOL $file 2>&1 | grep TIME-OBS`
    
    				if [ ! -z "$date" -a ! -z "$time" ]; then
    					date_obs=${date:11:10}T${time:11:12}
    					$MODHEAD_TOOL $file DATE_OBS "'$date_obs'" &>/dev/null
    				fi
    			fi
    		fi #irt 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