mirror of
				https://github.com/flynx/proxmox-utils.git
				synced 2025-11-04 06:00:10 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			80 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			80 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
#!/usr/bin/bash
 | 
						|
 | 
						|
 | 
						|
TEXT_STATUS=${TEXT_STATUS:=/media/shared/status}
 | 
						|
 | 
						|
CONFIG=${CONFIG:=/etc/pve/nodes/pve/config}
 | 
						|
 | 
						|
# NOTE: since proxmox monitors files, it is better modify the file in 
 | 
						|
#		one go but since checking can not be done in an instant we write 
 | 
						|
#		the check results to $TMP_RESULTS and when done will swap it with
 | 
						|
#		$CONFIG...
 | 
						|
# XXX move this to /tmp???
 | 
						|
TMP_RESULTS=${TMP_RESULTS:=${CONFIG}.live}
 | 
						|
 | 
						|
 | 
						|
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
 | 
						|
 | 
						|
source .pct-helpers
 | 
						|
 | 
						|
 | 
						|
#----------------------------------------------------------------------
 | 
						|
 | 
						|
DATE=`date +'%Y-%m-%d %H:%M'` 
 | 
						|
 | 
						|
if [ -e $TMP_RESULTS ] ; then
 | 
						|
	rm -f $TMP_RESULTS
 | 
						|
fi
 | 
						|
 | 
						|
if [ -e $TEXT_STATUS ] ; then
 | 
						|
	mv -f $TEXT_STATUS{,.old}
 | 
						|
	echo $DATE > $TEXT_STATUS
 | 
						|
else
 | 
						|
	TEXT_STATUS=/dev/null
 | 
						|
fi
 | 
						|
 | 
						|
 | 
						|
# read the sites from the status section in $CONFIG...
 | 
						|
readarray -t lines <<<$(\
 | 
						|
	sed -n '/STATUS BEGIN/,/STATUS END/p' "$CONFIG" \
 | 
						|
		| sed \
 | 
						|
			-e '1d;$d' \
 | 
						|
			-e 's/^#//' \
 | 
						|
			-e 's/%3A/:/g' \
 | 
						|
			-e 's/ : \(OK\|**ERROR\).*//')
 | 
						|
 | 
						|
# fill the status section -> $TMP_RESULTS...
 | 
						|
cp -f "$CONFIG" "$CONFIG".bak
 | 
						|
{
 | 
						|
	echo '#<!-- STATUS BEGIN -->'
 | 
						|
	for line in "${lines[@]}" ; do
 | 
						|
		# empty lines...
 | 
						|
		if [[ "$line" =~ ^[[:space:]]*$ ]] ; then
 | 
						|
			echo "#"
 | 
						|
			continue
 | 
						|
		# skip check date...
 | 
						|
		elif [[ "$line" =~ ^_\(checked[[:blank:]]on:[[:blank:]].*\)_$ ]] ; then
 | 
						|
			continue
 | 
						|
		fi
 | 
						|
 | 
						|
		./check-status "$line" \
 | 
						|
			| tee -a $TEXT_STATUS \
 | 
						|
			| sed \
 | 
						|
				-e 's/^\(.*\)\(ERROR.*$\)/\1**\2**/' \
 | 
						|
				-e 's/^/#/'
 | 
						|
	done
 | 
						|
	echo "#_(checked on: ${DATE})_"
 | 
						|
	echo '#<!-- STATUS END -->'
 | 
						|
} \
 | 
						|
	| fillsection -r STATUS ${CONFIG} \
 | 
						|
	> "$TMP_RESULTS"
 | 
						|
 | 
						|
 | 
						|
# replace $TMP_RESULTS -> $CONFIG
 | 
						|
if [ -e $TMP_RESULTS ] ; then
 | 
						|
	mv -f "$TMP_RESULTS" "$CONFIG"
 | 
						|
fi
 | 
						|
 | 
						|
 | 
						|
# vim:set ts=4 sw=4 nowrap :
 |