diff options
author | Erich Eckner <git@eckner.net> | 2022-04-22 14:15:42 +0200 |
---|---|---|
committer | Erich Eckner <git@eckner.net> | 2022-04-22 14:15:42 +0200 |
commit | 50c875195c6dab4db87cd1ca414c23cb7afc48de (patch) | |
tree | 8cde9e56d0e529e9860b3f40b2cc82ed1ca00451 | |
parent | 5d24a1a25d5a4586f14f4b43c5337fec118c254d (diff) | |
download | ssh-keystore-50c875195c6dab4db87cd1ca414c23cb7afc48de.tar.xz |
scripts/gather-files: use sudo if possible
-rwxr-xr-x | scripts/gather-files | 28 |
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 |