# test that a string to conforms to GPG's expiration format
test_gpg_expire() {
- echo "$1" | egrep -q "^[0-9][mwy]?$"
+ echo "$1" | egrep -q "^[0-9]+[mwy]?$"
}
# check that a file is properly owned, and that all it's parent
fi
# loop over all lines in the gpg output and process.
- # need to do it this way (as opposed to "while read...") so that
- # variables set in loop will be visible outside of loop
echo "$gpgOut" | cut -d: -f1,2,5,10,12 | \
while IFS=: read -r type validity keyid uidfpr usage ; do
# process based on record type
local nHosts
local nHostsOK
local nHostsBAD
+ local fileCheck
local host
# the number of hosts specified on command line
# create a lockfile on known_hosts
lockfile-create "$KNOWN_HOSTS"
+ # note pre update file checksum
+ fileCheck=$(md5sum "$KNOWN_HOSTS")
+
for host ; do
# process the host
process_host_known_hosts "$host"
lockfile-remove "$KNOWN_HOSTS"
# note if the known_hosts file was updated
- if [ "$nHostsOK" -gt 0 -o "$nHostsBAD" -gt 0 ] ; then
+ if [ "$(md5sum "$KNOWN_HOSTS")" != "$fileCheck" ] ; then
log "known_hosts file updated."
fi
hosts=$(meat "$KNOWN_HOSTS" | cut -d ' ' -f 1 | grep -v '^|.*$' | tr , ' ' | tr '\n' ' ')
+ if [ -z "$hosts" ] ; then
+ log "no hosts to process."
+ return
+ fi
+
# take all the hosts from the known_hosts file (first
# field), grep out all the hashed hosts (lines starting
# with '|')...
local nIDs
local nIDsOK
local nIDsBAD
+ local fileCheck
# the number of ids specified on command line
nIDs="$#"
# create a lockfile on authorized_keys
lockfile-create "$AUTHORIZED_KEYS"
+ # note pre update file checksum
+ fileCheck=$(md5sum "$AUTHORIZED_KEYS")
+
for userID ; do
# process the user ID, change return code if key not found for
# user ID
lockfile-remove "$AUTHORIZED_KEYS"
# note if the authorized_keys file was updated
- if [ "$nIDsOK" -gt 0 -o "$nIDsBAD" -gt 0 ] ; then
+ if [ "$(md5sum "$AUTHORIZED_KEYS")" != "$fileCheck" ] ; then
log "authorized_keys file updated."
fi
log "processing authorized_user_ids file..."
+ if ! meat "$authorizedUserIDs" > /dev/null ; then
+ log "no user IDs to process."
+ return
+ fi
+
nline=0
# extract user IDs from authorized_user_ids file