allow multi-line pubkeys; see code for doc

redis
Sitaram Chamarty 2012-11-13 08:45:45 +05:30
parent 57760d7e1b
commit 1f96180df0
1 changed files with 59 additions and 0 deletions

View File

@ -0,0 +1,59 @@
#!/bin/bash
# split multi-key files into separate keys like ssh-authkeys likes
# WHY
# ---
#
# Yeah I wonder that too, when it's so much more maintainable to keep the damn
# keys as sitaram@home.pub and sitaram@work.pub or such. But there's no
# accounting for tastes, and some old fogies apparently want to put all of a
# user's keys into a single ".pub" file.
# WARNINGS AND CAVEATS
# --------------------
#
# - assumes no "@" sign in basenames of any multi-key files (single line file
# may still have them)
# - assumes you don't have a subdir in keydir called "__split_keys__"
# - God help you if you try to throw in a putty key in there.
# SUPPORT
# -------
#
# NONE. Mainly because I **know** someone will throw in a putty key. I just
# know it.
# USAGE
# -----
#
# add it to the POST_COMPILE trigger list in the rc file, but *before* the
# ssh-authkeys program entry.
cd $GL_ADMIN_BASE/keydir
rm -rf __split_keys__
mkdir __split_keys__
export SKD=$PWD/__split_keys__
find . -type f -name "*.pub" | while read k
do
# do we need to split?
lines=`wc -l < $k`
[ "$lines" = "1" ] && continue
# is it sane to split?
base=`basename $k .pub`
echo $base | grep '@' >/dev/null && continue
# ok do it
seq=1
while read line
do
echo "$line" > $SKD/$base@$seq.pub
(( seq++ ))
done < $k
# now delete the original file
rm $k
done