diff options
Diffstat (limited to 'parcimini.bash')
-rw-r--r-- | parcimini.bash | 38 |
1 files changed, 28 insertions, 10 deletions
diff --git a/parcimini.bash b/parcimini.bash index 016f166..8047a79 100644 --- a/parcimini.bash +++ b/parcimini.bash @@ -1,5 +1,11 @@ self=parcimini +# If systemd made us a logs directory, write to files in there +if [ -n "$LOGS_DIRECTORY" ] ; then + dir=${LOGS_DIRECTORY%%:%} + exec >>"$dir"/"$self".log +fi + # Base interval between key retrievals from first arg; default 20 mins interval=${1:-120} @@ -7,8 +13,20 @@ interval=${1:-120} hash gpg || exit hash shuf || exit +# Define logging function +logf() { + format=$1 + shift + printf "%s: %s: $format" \ + "$(date +'%FT%T')" "$self" "$@" +} + # Make a temporary file for the key listings, delete on exit -trap 'rm -f "$list"' EXIT +cleanup() { + logf 'Stopped\n' + rm -f -- "$list" +} +trap cleanup EXIT list=$(mktemp) || exit # Define a function to retrieve all keychain fingerprints @@ -21,27 +39,27 @@ END { for (key_id in key_ids) print key_id }' } # Log process start -printf >&2 '%s: Started; base interval %u seconds.\n' \ - "$self" "$interval" +logf 'Started; base interval %u seconds.\n' \ + "$interval" # While we're able to write a shuffled key list to the file, refresh all of them while key_ids | shuf > "$list" ; do - printf >&2 '%s: Beginning new round; %u key IDs found.\n' \ - "$self" "$(sed '$=;d' "$list")" + logf 'Beginning new round; %u key IDs found.\n' \ + "$(sed '$=;d' "$list")" # Shuffle list and read each ID while read -r key_id ; do # Sleep for a random interval spell=$((RANDOM % interval + 1)) - printf >&2 '%s: Sleeping for %u seconds...\n' \ - "$self" "$spell" + logf 'Sleeping for %u seconds...\n' \ + "$spell" sleep "$spell" # Retrieve key - printf >&2 '%s: Retrieving key %s...\n' \ - "$self" "$key_id" - gpg --batch --no-tty --recv-key "$key_id" + logf 'Retrieving key %s...\n' \ + "$key_id" + gpg --batch --no-tty --recv-key "$key_id" 2>&1 done < $list done |