Compare commits
54 Commits
8a9f48481f
...
b069d30fa9
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
b069d30fa9 | ||
|
|
a889f1ff6f | ||
|
|
fb29201bcd | ||
|
|
01faecccda | ||
|
|
ddc61edccd | ||
|
|
33e88fba83 | ||
|
|
0ece9167c0 | ||
|
|
55be94f26a | ||
|
|
ac974fff80 | ||
|
|
bbc65490d3 | ||
|
|
f52295c6ee | ||
|
|
320d899e95 | ||
|
|
008de3f44c | ||
|
|
652e775164 | ||
|
|
6a57064a74 | ||
|
|
fb583285e5 | ||
|
|
f71987d044 | ||
|
|
528bb7def0 | ||
|
|
16a6db49d9 | ||
|
|
2f5be070c8 | ||
|
|
e21989a5c3 | ||
|
|
60568fe7a8 | ||
|
|
021d7c695a | ||
|
|
316f57e41f | ||
|
|
8d391800d6 | ||
|
|
d602c76796 | ||
|
|
dbfe55872f | ||
|
|
1fd34742fe | ||
|
|
3ac7a29917 | ||
|
|
018d832456 | ||
|
|
7d82f754db | ||
|
|
6f6fedcb95 | ||
|
|
191d690603 | ||
|
|
71e228c6c2 | ||
|
|
2a491037a0 | ||
|
|
05c46480fa | ||
|
|
329f3a71ff | ||
|
|
986aada28f | ||
|
|
30d39a1060 | ||
|
|
bbc0007917 | ||
|
|
c9d13e3a25 | ||
|
|
f32e7b9242 | ||
|
|
271b922f1d | ||
|
|
1b6e51ef70 | ||
|
|
7d671bccc0 | ||
|
|
e012a9b50f | ||
|
|
fe2d738b42 | ||
|
|
5b81d72b2b | ||
|
|
d6bc8b84b3 | ||
|
|
2729af8349 | ||
|
|
2da31a5355 | ||
|
|
bf5ad573a2 | ||
|
|
e6e16d19cd | ||
|
|
fc2dae9e56 |
@ -1,2 +1,7 @@
|
||||
Working_Fullpath=$(pwd)
|
||||
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")
|
||||
|
||||
114
hash-files
114
hash-files
@ -1,9 +1,12 @@
|
||||
#!/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)
|
||||
|
||||
IFS=$'\n'
|
||||
|
||||
set -a
|
||||
source .env 2>&1 > /dev/null
|
||||
set +a
|
||||
@ -12,67 +15,40 @@ set +a
|
||||
############
|
||||
|
||||
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 )
|
||||
|
||||
|
||||
mdls_per_file () {
|
||||
file=$1
|
||||
unset mdls_properties
|
||||
for line in $(mdls $file); do
|
||||
old_IFS=$IFS
|
||||
unset IFS
|
||||
mdls_key=$(printf "%s" $line | cut -d '=' -f 1)
|
||||
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
|
||||
write_log "List of files created successfully."
|
||||
unset IFS
|
||||
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
|
||||
|
||||
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. ===
|
||||
write_per_file () {
|
||||
# "=== 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."
|
||||
# write_log "$temp_csv_file written successfully."
|
||||
printf 'File: %s\nHash: %s\nMDLS Properties:\t%s\n' $1 $2 $3
|
||||
}
|
||||
|
||||
cleanup () {
|
||||
@ -84,18 +60,26 @@ cleanup () {
|
||||
|
||||
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
|
||||
|
||||
|
||||
## Create temp file
|
||||
temp_csv_file=$($mktemp_bin)
|
||||
## Initialize column names
|
||||
csv_columns=( "File Path" "File Hash" )
|
||||
## Populate Columns from keys of interest
|
||||
for key in ${keys_of_interest[@]};do
|
||||
csv_columns+=( $key )
|
||||
done
|
||||
## Print columns to first line of csv
|
||||
# "======= CSV Column Headers ========"
|
||||
{ IFS=',';echo "${csv_columns[*]}";IFS=$'\n'
|
||||
## Loop through files, writing to csv
|
||||
for file in $(find $Working_Fullpath -maxdepth 1 -type f); do
|
||||
## 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