summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorErich Eckner <git@eckner.net>2022-04-22 13:01:13 +0200
committerErich Eckner <git@eckner.net>2022-04-22 13:01:13 +0200
commit373d0ef7ae1a144d8f087ee2b2b1322d152c1bd2 (patch)
tree5b5ed8f28e51795d5d6e210b58e0b80187cf095d
parent4ed71ee49e9937563e8c31d7a5746d9f698c16d0 (diff)
downloadssh-keystore-373d0ef7ae1a144d8f087ee2b2b1322d152c1bd2.tar.xz
scripts/gather-files new
-rwxr-xr-xscripts/gather-files32
1 files changed, 32 insertions, 0 deletions
diff --git a/scripts/gather-files b/scripts/gather-files
new file mode 100755
index 0000000..3dfaf14
--- /dev/null
+++ b/scripts/gather-files
@@ -0,0 +1,32 @@
+#!/bin/bash
+
+if [ $# -ne 1 ] && [ $# -ne 2 ]; then
+ >&2 echo 'usage: '"$0"' host'
+ >&2 echo 'usage: '"$0"' host ssh-alias'
+ exit 1
+fi
+
+cd "${0%/*}/.."
+
+rm -rf --one-file-system "hosts/$1"
+mkdir -p "hosts/$1"
+
+ssh "${2:-$1}" -t 'su -c '"'"'
+ cut -d: -f1,6 \
+ </etc/passwd \
+ | tr ":" " " \
+ | while read -r user home; do
+ [ -d "${home}/.ssh" ] \
+ || continue
+ [ -f "${home}/.ssh/authorized_keys" ] \
+ || continue
+ sed "s@^@${user} @" "${home}/.ssh/authorized_keys"
+ done
+'"'" \
+2>/dev/null \
+| tee /dev/stderr \
+| sed 1d \
+| while read user key; do
+ printf '%s\n' "${key}" \
+ >> "hosts/$1/${user}"
+done