GNU/Linux >> Linux Esercitazione >  >> Linux

Eseguire un file di script su Ssh tramite Sudo?

Posso accedere a una macchina remota come utente che può eseguire sudo su - . Non riesco ad accedere come root.

Ho uno script in locale che voglio eseguire sulla macchina remota. Inoltre, lo script viene inviato lì tramite un altro script.

Non riesco a capire come. Ho scritto un bel po' di domande e risposte qui, ma senza successo. Il più vicino che ho:

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

Questo finisce con questo output:

======== [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.

Questo è il "più vicino" perché vede i singoli comandi ma non è sotto sudo , perché la prima riga è <<EOF non è (non)eseguito correttamente l'escape.

**Come dovrei eseguire uno script arbitrario in sudo su ssh ?"

Risposta accettata:

L'ho capito subito dopo aver postato.

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.

Il ' extra Sembra che il problema fosse il comando SSH e dovevo anche creare la nuova riga tramite echo .

Tuttavia, non sono del tutto sicuro se questo sia solo un trucco fortunato o il modo giusto per farlo. Ad essere onesto, sono completamente perso nella valutazione delle citazioni di Bash 🙂


Linux
  1. Uno script Bash può essere agganciato a un file?

  2. Ssh:passare le password a uno script?

  3. Script Bash:controlla se un file è un file di testo?

  4. Ssh - Traffico di tunnel attraverso un'altra macchina su Ssh?

  5. Eseguire lo stesso script su più server tramite Ssh?

35 Esempi di script Bash

SSHFS:montaggio di un file system remoto su SSH

Impedire l'esecuzione simultanea di uno script bash

Conferma automatica durante l'esecuzione di script Bash?

Come posso controllare la sintassi di uno script Bash senza eseguirlo?

Confronta le somme md5 nello script bash