staging.inyokaproject.org

SSH/Bash: Mehrzeilige Kommandos (Heredoc beste Lösung?)

Status: Gelöst | Ubuntu-Version: Ubuntu 18.04 (Bionic Beaver)
Antworten |

ui

Anmeldungsdatum:
22. November 2008

Beiträge: Zähle...

Mir gefällt folgender Ansatz. Auch weil ich Variablen im Heredoc verwenden kann.

1
2
3
4
5
6
7
if ! ssh user@server.beispiel.de /bin/bash << EOF
  #VIELE ZEILEN AN KOMMANDOS, BEDINGUNGEN USW.
  #VARIABLEN KANN ICH AUCH NUTZEN.
EOF
then
  echo "Keine SSH-Verbindung möglich."
fi

Gibt es bessere Lösungen, die sich noch einfacher schreiben lassen?

seahawk1986

Anmeldungsdatum:
27. Oktober 2006

Beiträge: 11278

Du kannst das Shell-Skript auch aus einer Datei lesen lassen. Oder für komplexere Dinge ein Tool wie Ansible verwenden, um auf einem oder mehreren Rechnern Befehle ausführen zu lassen. Wenn dir ein Tool Idempotenz ermöglicht, hat das den Vorteil, dass man ein System leichter in einen bestimmten Zustand bringen kann.

frostschutz

Avatar von frostschutz

Anmeldungsdatum:
18. November 2010

Beiträge: 7795

Also quasi ein echo echo hey | bash über SSH?

Spricht an und für sich nichts dagegen. Du musst eben nur darauf achten...


cat << EOF
$foo und $bar
EOF

Ausgabe:

 und 

cat << EOF
1 \
2 \\
3 \\\
4 \\\\
5 \\\\\
6 \\\\\\
EOF

Ausgabe:

1 2 \
3 \4 \\
5 \\6 \\\

Man läuft da sehr leicht in verschiedene syntaktische Strickfallen.

Also wirklich mal an cat schicken und schauen, ob auch tatsächlich das rauskommt, was du erwartest.

Antworten |