Changes to be committed: modified: hash-files Added functionality for csv creation and writing to temp file for virtual memory persistence. Final write function may do some validation checks and then write the temp file to its permanent output path. Next Steps: - Should probably package a logrotate.d conf file as well for the logs as part of the logging feature.
		
			
				
	
	
		
			84 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			84 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
#!/usr/bin/env bash
 | 
						|
set -a
 | 
						|
source .env 2>&1 > /dev/null
 | 
						|
set +a
 | 
						|
 | 
						|
 | 
						|
## Functions
 | 
						|
############
 | 
						|
 | 
						|
write_log () {
 | 
						|
echo "		++ Write to log.
 | 
						|
		+++++++++++++++"
 | 
						|
}
 | 
						|
 | 
						|
create_list_of_files () {
 | 
						|
#echo "=== Get list of files in $Working_Directory. ===
 | 
						|
#=================================================="
 | 
						|
IFS=$'\n'
 | 
						|
for file in $(find $Working_Fullpath -maxdepth 1 -type f); do
 | 
						|
	list_of_files+=( $file )
 | 
						|
done	
 | 
						|
unset IFS
 | 
						|
}
 | 
						|
 | 
						|
hash_files () {
 | 
						|
#echo "=== Hash files. ===
 | 
						|
#======================"
 | 
						|
IFS=$'\n'
 | 
						|
for file in ${list_of_files[@]}; do
 | 
						|
	hash=$(md5sum $file | awk '{ print $1 }')
 | 
						|
	list_of_hashes+=( $hash )
 | 
						|
done
 | 
						|
unset IFS
 | 
						|
}
 | 
						|
 | 
						|
create_csv () {
 | 
						|
#echo "=== Create array of comma-separated-values. ===
 | 
						|
#=================================================="
 | 
						|
	for i in ${!list_of_files[@]}; do
 | 
						|
		csv_array+=( ${list_of_files[i]},${list_of_hashes[i]} )
 | 
						|
	done
 | 
						|
	export csv_array
 | 
						|
}
 | 
						|
 | 
						|
write_data () {
 | 
						|
#echo "=== Write data to a .csv file. ===
 | 
						|
#===================================="
 | 
						|
	temp_csv_file=$(mktemp)
 | 
						|
	printf '%s,%s\n' "File Path" "File Hash" >> $temp_csv_file
 | 
						|
	for line in ${csv_array[@]};do
 | 
						|
		printf '%s\n' $line
 | 
						|
	done >> $temp_csv_file
 | 
						|
#	cat $temp_csv_file
 | 
						|
}
 | 
						|
 | 
						|
cleanup () {
 | 
						|
	:
 | 
						|
}
 | 
						|
 | 
						|
## Main
 | 
						|
#######
 | 
						|
 | 
						|
trap cleanup EXIT
 | 
						|
 | 
						|
echo "Main Start"
 | 
						|
create_list_of_files
 | 
						|
write_log
 | 
						|
hash_files
 | 
						|
write_log
 | 
						|
if [ ${#list_of_files[@]} != ${#list_of_hashes[@]} ];then
 | 
						|
	echo "Error! Number of files and hashes differs. Exiting..." && exit
 | 
						|
else
 | 
						|
	create_csv
 | 
						|
fi
 | 
						|
write_log
 | 
						|
write_data
 | 
						|
write_log
 | 
						|
cleanup
 | 
						|
 | 
						|
#while $list_of_files >=1; do
 | 
						|
#done
 | 
						|
 | 
						|
 |