aboutsummaryrefslogtreecommitdiff
path: root/parcimini.bash
diff options
context:
space:
mode:
Diffstat (limited to 'parcimini.bash')
-rw-r--r--parcimini.bash30
1 files changed, 22 insertions, 8 deletions
diff --git a/parcimini.bash b/parcimini.bash
index 016f166..441f173 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}
@@ -11,6 +17,14 @@ hash shuf || exit
trap 'rm -f "$list"' EXIT
list=$(mktemp) || exit
+# Define logging function
+logf() {
+ format=$1
+ shift
+ printf "%s: %s: $format" \
+ "$(date +'%FT%T')" "$self" "$@"
+}
+
# Define a function to retrieve all keychain fingerprints
key_ids() {
gpg --batch --no-tty --list-keys --with-colons |
@@ -21,26 +35,26 @@ 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"
+ logf 'Retrieving key %s...\n' \
+ "$key_id"
gpg --batch --no-tty --recv-key "$key_id"
done < $list