Compare commits
No commits in common. "b069d30fa95aa95850d35a2c7200fce65df6f68d" and "8a9f48481f3de8077103b8f772f8cfb6205288ec" have entirely different histories.
b069d30fa9
...
8a9f48481f
@ -1,7 +1,2 @@
|
|||||||
Working_Fullpath=$(pwd)
|
Working_Fullpath=$(pwd)
|
||||||
Working_Directory=$(basename $Working_Fullpath)
|
Working_Directory=$(basename $Working_Fullpath)
|
||||||
|
|
||||||
# IMPORTANT - The order of keys in keys_of_interest *must* match the order in
|
|
||||||
# which mdls prints them or csv output will be incoherent
|
|
||||||
|
|
||||||
keys_of_interest=("kMDItemFSCreationDate" "kMDItemFSName")
|
|
||||||
|
|||||||
116
hash-files
116
hash-files
@ -1,12 +1,9 @@
|
|||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
log_file=/var/log/hash-files.log
|
log_file=/var/log/hash-files.log
|
||||||
keys_of_interest=("kMDItemFSCreationDate" "kMDItemFSName")
|
|
||||||
md5_bin=$(which md5sum)
|
md5_bin=$(which md5sum)
|
||||||
mktemp_bin=$(which mktemp)
|
mktemp_bin=$(which mktemp)
|
||||||
DateTimeStamp=$(date +\%D_\%T)
|
DateTimeStamp=$(date +\%D_\%T)
|
||||||
|
|
||||||
IFS=$'\n'
|
|
||||||
|
|
||||||
set -a
|
set -a
|
||||||
source .env 2>&1 > /dev/null
|
source .env 2>&1 > /dev/null
|
||||||
set +a
|
set +a
|
||||||
@ -15,40 +12,67 @@ set +a
|
|||||||
############
|
############
|
||||||
|
|
||||||
write_log () {
|
write_log () {
|
||||||
|
#echo " ++ Write to log.
|
||||||
|
# +++++++++++++++"
|
||||||
## Use on systems managed with systemd
|
## Use on systems managed with systemd
|
||||||
# printf 'hash-files: %s\n' "$1" | systemd-cat
|
# printf 'hash-files: %s\n' "$1" | systemd-cat
|
||||||
printf '%s hash-files: %s\n' "$DateTimeStamp" "$1" >> $log_file
|
printf '%s hash-files: %s\n' "$DateTimeStamp" "$1" >> $log_file
|
||||||
}
|
}
|
||||||
|
|
||||||
|
create_list_of_files () {
|
||||||
|
#echo "=== Get list of files in $Working_Directory. ===
|
||||||
mdls_per_file () {
|
#=================================================="
|
||||||
file=$1
|
IFS=$'\n'
|
||||||
unset mdls_properties
|
for file in $(find $Working_Fullpath -maxdepth 1 -type f); do
|
||||||
for line in $(mdls $file); do
|
list_of_files+=( $file )
|
||||||
old_IFS=$IFS
|
done
|
||||||
unset IFS
|
write_log "List of files created successfully."
|
||||||
mdls_key=$(printf "%s" $line | cut -d '=' -f 1)
|
unset IFS
|
||||||
mdls_value=$(printf "%s" $line | cut -d '=' -f 2)
|
|
||||||
if [[ " ${keys_of_interest[*]} " =~ " ${mdls_key} " ]];then
|
|
||||||
IFS=$old_IFS
|
|
||||||
mdls_properties+=( $mdls_value )
|
|
||||||
unset IFS
|
|
||||||
else
|
|
||||||
: # "Did not print!"
|
|
||||||
fi
|
|
||||||
IFS=$old_IFS
|
|
||||||
done
|
|
||||||
IFS=',';echo "${mdls_properties[*]}";IFS=$old_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)
|
||||||
|
printf "\n============================\nMDLS Key: %s\nMDLS Value: %s\n============================\n\n" $mdls_key $mdls_value
|
||||||
|
done
|
||||||
|
|
||||||
write_per_file () {
|
done
|
||||||
# "=== Write data to a .csv file. ===
|
}
|
||||||
|
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
|
# cat $temp_csv_file
|
||||||
# write_log "$temp_csv_file written successfully."
|
write_log "$temp_csv_file written successfully."
|
||||||
printf 'File: %s\nHash: %s\nMDLS Properties:\t%s\n' $1 $2 $3
|
|
||||||
}
|
}
|
||||||
|
|
||||||
cleanup () {
|
cleanup () {
|
||||||
@ -60,26 +84,18 @@ cleanup () {
|
|||||||
|
|
||||||
trap cleanup EXIT
|
trap cleanup EXIT
|
||||||
|
|
||||||
## Create temp file
|
echo "Main Start"
|
||||||
temp_csv_file=$($mktemp_bin)
|
create_list_of_files
|
||||||
## Initialize column names
|
mdls_files
|
||||||
csv_columns=( "File Path" "File Hash" )
|
#hash_files
|
||||||
## Populate Columns from keys of interest
|
#if [ ${#list_of_files[@]} != ${#list_of_hashes[@]} ];then
|
||||||
for key in ${keys_of_interest[@]};do
|
# echo "Error! Number of files and hashes differs. Exiting..." && exit
|
||||||
csv_columns+=( $key )
|
#else
|
||||||
done
|
# create_csv
|
||||||
## Print columns to first line of csv
|
#fi
|
||||||
# "======= CSV Column Headers ========"
|
#write_data
|
||||||
{ IFS=',';echo "${csv_columns[*]}";IFS=$'\n'
|
|
||||||
## Loop through files, writing to csv
|
#while $list_of_files >=1; do
|
||||||
for file in $(find $Working_Fullpath -maxdepth 1 -type f); do
|
#done
|
||||||
## Set our hash value
|
|
||||||
hash=$($md5_bin $file | awk '{ print $4 }')
|
|
||||||
# Print csv row output
|
|
||||||
# "============= CSV Row =========="
|
|
||||||
echo "$file,$hash,$(mdls_per_file $file)"
|
|
||||||
# write_per_file $file $hash $mdls_properties
|
|
||||||
done
|
|
||||||
} >> $temp_csv_file
|
|
||||||
cat $temp_csv_file
|
|
||||||
unset IFS
|
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user