Your branch is up to date with 'origin/parse-mdls'. Changes to be committed: modified: hash-files Added default keys_of_interest array Added output filter functionality leveraging keys_of_interest
		
			
				
	
	
		
			107 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			107 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
#!/usr/bin/env bash
 | 
						|
log_file=/var/log/hash-files.log
 | 
						|
keys_of_interest={"kMDItemFSCreationDate" "kMDItemFSName"}
 | 
						|
md5_bin=$(which md5sum)
 | 
						|
mktemp_bin=$(which mktemp)
 | 
						|
DateTimeStamp=$(date +\%D_\%T)
 | 
						|
 | 
						|
set -a
 | 
						|
source .env 2>&1 > /dev/null
 | 
						|
set +a
 | 
						|
 | 
						|
## Functions
 | 
						|
############
 | 
						|
 | 
						|
write_log () {
 | 
						|
#echo "		++ Write to log.
 | 
						|
#		+++++++++++++++"
 | 
						|
## Use on systems managed with systemd
 | 
						|
#	printf 'hash-files:	%s\n' "$1" | systemd-cat
 | 
						|
	printf '%s	hash-files:	%s\n' "$DateTimeStamp" "$1" >> $log_file
 | 
						|
}
 | 
						|
 | 
						|
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	
 | 
						|
	write_log "List of files created successfully."
 | 
						|
	unset IFS
 | 
						|
}
 | 
						|
 | 
						|
mdls_files () {
 | 
						|
	IFS=$'\n'
 | 
						|
	for file in $list_of_files; do
 | 
						|
		for line in $(mdls $file); do
 | 
						|
			mdls_key=$(printf "%s" $line | cut -d '=' -f 1)
 | 
						|
			mdls_value=$(printf "%s" $line | cut -d '=' -f 2)
 | 
						|
			if $(grep $mdls_key $keys_of_interest);then
 | 
						|
				printf "\n============================\nMDLS Key: %s\nMDLS Value: %s\n============================\n\n" $mdls_key $mdls_value
 | 
						|
			else
 | 
						|
				:
 | 
						|
			fi
 | 
						|
		done
 | 
						|
 | 
						|
	done
 | 
						|
}
 | 
						|
hash_files () {
 | 
						|
#echo "=== Hash files. ===
 | 
						|
#======================"
 | 
						|
	IFS=$'\n'
 | 
						|
	for file in ${list_of_files[@]}; do
 | 
						|
		hash=$($md5_bin $file | awk '{ print $1 }')
 | 
						|
		list_of_hashes+=( $hash )
 | 
						|
	done
 | 
						|
	write_log "Files hashed successfully."
 | 
						|
	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_log "CSV Array creation successful."
 | 
						|
}
 | 
						|
 | 
						|
write_data () {
 | 
						|
#echo "=== Write data to a .csv file. ===
 | 
						|
#===================================="
 | 
						|
	temp_csv_file=$($mktemp_bin)
 | 
						|
	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
 | 
						|
	write_log "$temp_csv_file written successfully."
 | 
						|
}
 | 
						|
 | 
						|
cleanup () {
 | 
						|
	write_log "Cleanup completed successfully."
 | 
						|
}
 | 
						|
 | 
						|
## Main
 | 
						|
#######
 | 
						|
 | 
						|
trap cleanup EXIT
 | 
						|
 | 
						|
echo "Main Start"
 | 
						|
create_list_of_files
 | 
						|
mdls_files
 | 
						|
#hash_files
 | 
						|
#if [ ${#list_of_files[@]} != ${#list_of_hashes[@]} ];then
 | 
						|
#	echo "Error! Number of files and hashes differs. Exiting..." && exit
 | 
						|
#else
 | 
						|
#	create_csv
 | 
						|
#fi
 | 
						|
#write_data
 | 
						|
 | 
						|
#while $list_of_files >=1; do
 | 
						|
#done
 | 
						|
 | 
						|
 |