From 3b4a41acf668ffe51a0c2a4fb59247b19fa6e668 Mon Sep 17 00:00:00 2001 From: Kjetil Orbekk Date: Thu, 10 Sep 2015 14:48:39 -0400 Subject: Add sync script for authorized_keys. --- bin/kj_sync_authorized_keys.sh | 46 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 46 insertions(+) create mode 100755 bin/kj_sync_authorized_keys.sh diff --git a/bin/kj_sync_authorized_keys.sh b/bin/kj_sync_authorized_keys.sh new file mode 100755 index 0000000..9cedd56 --- /dev/null +++ b/bin/kj_sync_authorized_keys.sh @@ -0,0 +1,46 @@ +#!/bin/bash + +declare -r begin_marker="### BEGIN MANAGED_BY_KJ_SYNC_AUTHORIZED_KEYS.SH ###" +declare -r end_marker="### END MANAGED_BY_KJ_SYNC_AUTHORIZED_KEYS.SH ###" +declare -r overwrite=true +declare -r tmpdir=$(mktemp -d /tmp/kj_sync_authorized_keys.XXXXX) + +targets=( + tesuji.6.orbekk.com + login.6.orbekk.com + minecraft.6.orbekk.com + backup.6.orbekk.com + login.pvv.ntnu.no + aji.orbekk.com + moyo.orbekk.com +) +authorized_keys_file=$HOME/dotfiles/authorized_keys + +add_keys_to_file() { + filename="$1" + awk \ + "/$begin_marker/"' { exit 0 } { print }' \ + ${filename} > ${filename}.header + awk \ + "/$end_marker/"' { should_output=1 } should_output { print }' \ + ${filename} > ${filename}.footer + + cat "${filename}.header" > ${filename} + echo "${begin_marker}" >> ${filename} + echo "# WARNING: ANY CHANGES WILL BE OVERWRITTEN" >> ${filename} + cat "$authorized_keys_file" >> ${filename} + echo "${end_marker}" >> ${filename} + cat "${filename}.footer" >> ${filename} +} + +for target in ${targets[@]}; do + echo "syncing $target" + tmp="${tmpdir}/${target}" + touch ${tmp} + if [[ $overwrite != true ]]; then + ssh ${target} 'cat .ssh/authorized_keys || echo -n' > ${tmp} + fi + add_keys_to_file "${tmp}" + ssh ${target} 'mkdir -p .ssh' + cat "${tmp}" | ssh ${target} 'cat > .ssh/authorized_keys.tmp && mv .ssh/authorized_keys{.tmp,}' +done -- cgit v1.2.3