Bash-Script remote ausführen – Teil 2

(siehe auch: Bash-Script remote ausführen – Teil 1)

Ich habe noch ein bisschen experimentiert und war mit der aktuellen Lösung noch nicht ganz zufrieden. Wenn ich Scripte remote ausführe, dann müssen häufig auf Daten übertragen werden.

Das geht klassisch in 2 Schritten mit 2 SSH-Verbindungen.

# datei transferieren
ssh user@host ‘cat > example.zip’ < example.zip
# script ausfüren
ssh user@host bash < example.sh

Mein Wunsch war hier immer, dass über eine SSH-Verbindung zu lösen.

In der folgenden Lösung werden die Daten direkt base64-encoded in das Script eingefügt. Hierbei sehe ich allerdings den Schritt des base64-encoded noch als Overhead an.

ssh user@host /bin/bash <<EOF
# datei transferieren
echo "`base64 example.zip`" | base64 -d > example.zip
# script ausführen
`cat example.sh`
EOF

Im nächsten Beispiel werden einfach alle Daten zusammengeängt und dann remote wieder geteilt.

size=$(stat -c %s example.zip)
cat example.zip example.sh | ssh user@host “head -c $size > example.zip; /bin/bash”

Advertisements