GNU/Linux >> Znalost Linux >  >> Linux

Spuštění souboru skriptu přes Ssh přes Sudo?

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ů 🙂


Linux
  1. Zabránění souběžnému spuštění bash skriptu

  2. Spustit stejný skript na několika serverech přes Ssh?

  3. Automatické potvrzení při spouštění skriptů Bash?

  1. Jak zvýraznit Bash skripty ve Vimu?

  2. Spusťte textový soubor jako příkazy v Bash

  3. Změna obsahu souboru pomocí shell skriptu

  1. Může být Bash skript připojen k souboru?

  2. Ssh – předávání hesel do skriptu?

  3. Posílám výzvu PS1 přes ssh