Mohu se přihlásit ke vzdálenému počítači jako uživatel, který umí sudo su -
. Nemohu se přihlásit jako root.
Mám lokálně skript, který chci spustit na vzdáleném počítači. Skript je tam také odeslán prostřednictvím jiného skriptu.
nemůžu přijít na to jak. Zveřejnil jsem zde několik otázek a odpovědí, ale bez úspěchu. Nejbližší mám:
COMMAND_SSH="sudo -i <<'EOF'"`cat ./unifyServiceNode.sh`"\nEOF\n" ;;
...
while read HOST; do
echo -e "nn======== [email protected]$HOST <-- $COMMAND_SSH =================nn";
ssh -n -tt [email protected]$HOST "'$COMMAND_SSH'";
done < hosts.txt
To končí tímto výstupem:
======== [email protected] <-- sudo -i <<'EOF'
##
## Creates a few links and scripts to unify the nodes maintainance.
##
BB="/bb"
NAME="bpds-api"
NAME2="bpds-"
mkdir -p $BB
ln -s /opt/$NAME/logs/*.log $BB/log
ln -s /opt/$NAME/conf/api/$NAME.yml $BB/conf.yml || ln -s /opt/$NAME/conf/api/$NAME2.yml $BB/conf.yml
echo "systemctl ${1:-restart} "${@:2}" $NAME" > $BB/Sys
echo "tail -${1:-500f} $BB/log" > $BB/Tail
echo "nano $BB/conf.yml" > $BB/Conf
chmod a+x $BB/Sys $BB/Tail $BB/Conf
echo "export PATH=$PATH:$BB" >> ~/.bashrc
EOF
=====================================
bash: sudo -i <<EOF': command not found
bash: line 14: /bb/Sys: Permission denied
bash: line 15: /bb/Tail: Permission denied
bash: line 16: /bb/Conf: Permission denied
chmod: changing permissions of ‘/bb/Sys’: Operation not permitted
chmod: changing permissions of ‘/bb/Tail’: Operation not permitted
chmod: changing permissions of ‘/bb/Conf’: Operation not permitted
bash: -c: line 18: unexpected EOF while looking for matching `''
bash: -c: line 19: syntax error: unexpected end of file
Connection to somehost.com closed.
Toto je „nejbližší“, protože vidí jednotlivé příkazy, ale není pod sudo
, protože na prvním řádku je <<EOF
není správně (ne)escaped.
**Jak mám spustit libovolný skript pod sudo
přes ssh
?“
Přijatá odpověď:
Brzy po odeslání jsem na to přišel.
COMMAND_SSH="sudo -i <<'EOF'"`cat ./unifyServiceNode.sh``echo -e 'nEOF'` ;;
ssh -n -tt [email protected]$HOST "$COMMAND_SSH"; ## -n prevents reading the input. -tt forces TTY.
Další '
Zdá se, že problém byl kolem příkazu SSH a také jsem potřeboval udělat nový řádek přes echo
.
Nejsem si však zcela jistý, zda je to jen šťastný hack nebo správný způsob, jak to udělat. Abych byl upřímný, úplně jsem se ztratil v hodnocení Bashových citátů 🙂