GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Ausführen einer Skriptdatei über SSH durch Sudo?

Ich kann mich bei einem Remote-Computer als Benutzer anmelden, der sudo su - ausführen kann . Ich kann mich nicht als Root anmelden.

Ich habe ein lokales Skript, das ich auf dem Remote-Computer ausführen möchte. Außerdem wird das Skript durch ein anderes Skript dorthin gesendet.

Ich kann nicht herausfinden, wie. Ich habe hier einige Fragen und Antworten beantwortet, aber ohne Erfolg. Das nächste, was ich habe:

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

Dies endet mit dieser Ausgabe:

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

Dies ist das „nächste“, weil es die einzelnen Befehle sieht, aber nicht unter sudo ist , da die erste Zeile <<EOF ist wird nicht richtig (nicht) maskiert.

**Wie soll ich ein beliebiges Skript unter sudo ausführen über ssh ?“

Akzeptierte Antwort:

Ich habe es bald nach dem Posten herausgefunden.

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.

Der zusätzliche ' s rund um den SSH-Befehl waren anscheinend das Problem, und ich musste auch den Zeilenumbruch durch echo machen .

Ich bin mir nicht ganz sicher, ob das nur ein Glücksfall oder der richtige Weg ist, es zu tun. Um ehrlich zu sein, bin ich völlig in Bashs Zitatbewertung verloren 🙂


Linux
  1. Bash-Skript:Prüfen, ob eine Datei eine Textdatei ist?

  2. Ssh – Tunnelverkehr durch eine andere Maschine über SSH?

  3. Wie kann man Bash-Skripte in Vim hervorheben?

  4. Variable in Bash-Skript, die ihren Wert von der letzten Ausführung beibehält

  5. So schließen Sie eine Datei in ein Bash-Shell-Skript ein

35 Bash-Skriptbeispiele

SSHFS:Mounten eines Remote-Dateisystems über SSH

Wie überprüfe ich die Syntax eines Bash-Skripts, ohne es auszuführen?

Textdatei als Befehle in Bash ausführen

Ändern des Inhalts einer Datei durch Shell-Skript

Vergleichen Sie md5-Summen im Bash-Skript