2016-06-30 15 views

Antwort

2

es sein sollte:

VAR=$(ssh "$USERNAME"@"$HOST" -- remote_command -option) 

Sie wollen remote_command remote ausführen und speichern Sie es lokal in einer Variablen. Das ist der obige Befehl.

Wenn Sie einen mehrzeiligen Befehl ausführen möchten remote verwenden Sie das folgende Konstrukt mit einem hier doc:

VAR=$(ssh "$USERNAME"@"$HOST" <<EOF 
    remote_command -option 
    another_command 
    ... 
EOF 
) 

Btw, es sei denn, Sie lokale Variablen in den Remote-Befehl einfügen möchten, werden Sie wahrscheinlich lokale Shell deaktivieren möchten Erweiterungen im hier doc <<'EOF' als Startdelimiter (beachten Sie die ') mit:

VAR=$(ssh "$USERNAME"@"$HOST" <<'EOF' 
    remote_command -option 
    another_command 
    ... 
EOF 
) 

in der obigen Form Sie Shell-Variablen, Kommandosubstitution usw. im Remote-Skript verwenden können. Wie folgt aus:

VAR=$(ssh "$USERNAME"@"$HOST" <<'EOF' 
    COUNT=$(remote_command -option) 
    another_command "${COUNT}" 
    if $((COUNT+1)) ; then 
     foo -bar 
    fi 
    ... and so on. all expansions happen remotely 
EOF 
) 
+0

wollte dieses Format als zwischen dem ersten und letzten Zeile verwenden ich eine große Logik zu schreiben habe vor, die auf dem Remote-Rechner – chozhan

+0

ssh $ username @ $ SUT ausgeführt werden müssen << EOD COUNT = $ (ls -la | wc -l) if [$ COUNT -eq 4]; dann remote_command2 fi EOD Planung, etwas wie das zu tun. Fragen Sie sich, ob das möglich ist – chozhan

+0

Verwenden Sie die letztere Version mit der << << EOF' in diesem Fall – hek2mgl

Verwandte Themen