summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorErich Eckner <git@eckner.net>2022-04-22 14:15:42 +0200
committerErich Eckner <git@eckner.net>2022-04-22 14:15:42 +0200
commit50c875195c6dab4db87cd1ca414c23cb7afc48de (patch)
tree8cde9e56d0e529e9860b3f40b2cc82ed1ca00451
parent5d24a1a25d5a4586f14f4b43c5337fec118c254d (diff)
downloadssh-keystore-50c875195c6dab4db87cd1ca414c23cb7afc48de.tar.xz
scripts/gather-files: use sudo if possible
-rwxr-xr-xscripts/gather-files28
1 files changed, 24 insertions, 4 deletions
diff --git a/scripts/gather-files b/scripts/gather-files
index e33d8dd..edf7a8a 100755
--- a/scripts/gather-files
+++ b/scripts/gather-files
@@ -7,22 +7,42 @@ fi
cd "${0%/*}/.."
-ssh "${2:-$1}" -t 'su -c '"'"'
+cmd='
uname -n
cut -d: -f1,6 \
</etc/passwd \
| tr ":" " " \
- | while read -r user home; do
+ | while read -r user home; do \
[ -d "${home}/.ssh" ] \
|| continue
[ -f "${home}/.ssh/authorized_keys" ] \
|| continue
sed "s@^@${user} @" "${home}/.ssh/authorized_keys"
done
-'"'" \
+'
+
+cmd=$(
+ printf '%s\n' "${cmd}" \
+ | grep -vx '\s*' \
+ | sed '
+ :a
+ N
+ s/\\\n/ /
+ ta
+ s/;\s*\n/; /
+ ta
+ s/\n/; /
+ ta
+ '
+)
+
+{
+ ssh "${1}" -t "sudo -s bash -c '${cmd}'" \
+ || ssh "${1}" -t "su -c '${cmd}'" \
+ | sed 1d
+} \
2>/dev/null \
| tee /dev/stderr \
-| sed 1d \
| tr -d '\r' \
| {
read -r host