I want to run a single script locally that invokes a 'sudo ./up' on several remote hosts via ssh.
Where ./up is simply:
---- /home/user/up ----
#!/bin/bash
sudo apt update && sudo apt -y upgrade
-----------------------
The username on all hosts is 'user', and the user is already granted sudoers permission (on all hosts) to invoke that script.
Keys are ssh-add'ed, and I normally do not need to enter any password when sshing to another host.
I can do it from a terminal with:
ssh user@remotehost1 sudo ./up
ssh user@remotehost2 sudo ./up
etc
HOWEVER when i try to put the commands together in a script the remote invocations fail because I am asked for root@remotehost's password (and I not only dont want to use root, but 'user' does already have permission to execute that script without password)
ie: this works:
(typed in konsole)
ssh user@remotehost1 sudo ./up
ssh user@remotehost2 sudo ./up
and yet this FAILS:
--- /home/user/up ---
#!/bin/bash
sudo ./up # does work, as expected
ssh user@remotehost1 sudo ./up # fails with password query
ssh user@remotehost2 sudo ./up # fails with password query
---------------------
this also fails
--- /home/user/up ---
#!/bin/bash
sudo ./up # does work, as expected
ssh user@remotehost1 sudo --user user ./up # fails with password query
ssh user@remotehost2 sudo --user user ./up # fails with password query
---------------------
and by fail i mean it pauses to query a passord rather that completing and exiting:
user@localhost:~$ sudo ./up
root@remotehost1's password:
-------- SOLVED --------
---- /home/user/update ----
#!/bin/bash
sudo ./up
ssh host1 sudo ./up
ssh host2 sudo ./up
---- /home/user/up (on all machines) ----
#!/bin/bash
#user ALL=(ALL) NOPASSWD: /home/user/up
#
sudo apt update && sudo apt -y upgrade
[[ -f /var/run/reboot-required ]] && echo -ne "\\n\033[1;31m====== $HOSTNAME REBOOT REQUIRED =======\033[0m\\n"
[[ -f /var/run/reboot-required.pkgs ]] && cat /var/run/reboot-required.pkgs
echo "================ FINISHED ================"
then just execute ./update in terminal
Doh. thanks Ginnungagap.