Dies ist eine alte Frage, und die Antwort von Jason ist gut, aber ich möchte Folgendes hinzufügen:
ssh user@host <<'ENDSSH'
#commands to run on remote host
ENDSSH
Dies kann auch mit su und Befehlen verwendet werden, die eine Benutzereingabe erfordern. (Beachten Sie die '
entkommen heredoc)
Edit: Da diese Antwort immer wieder auftaucht, möchte ich noch mehr Informationen zu dieser wunderbaren Verwendung von heredoc hinzufügen:
Sie können Befehle mit dieser Syntax verschachteln, und das ist die einzige Möglichkeit, wie die Verschachtelung zu funktionieren scheint (auf eine vernünftige Art und Weise)
ssh user@host <<'ENDSSH'
#commands to run on remote host
ssh user@host2 <<'END2'
# Another bunch of commands on another host
wall <<'ENDWALL'
Error: Out of cheese
ENDWALL
ftp ftp.secureftp-test.com <<'ENDFTP'
test
test
ls
ENDFTP
END2
ENDSSH
Mit einigen Diensten wie telnet, ftp usw. können Sie tatsächlich ein Gespräch führen. Aber denken Sie daran, dass heredoc die stdin einfach als Text sendet, es wartet nicht auf eine Antwort zwischen den Zeilen
Edit: Ich habe gerade herausgefunden, dass man die Innenseiten mit Registerkarten wenn Sie <<-END
!
ssh user@host <<-'ENDSSH'
#commands to run on remote host
ssh user@host2 <<-'END2'
# Another bunch of commands on another host
wall <<-'ENDWALL'
Error: Out of cheese
ENDWALL
ftp ftp.secureftp-test.com <<-'ENDFTP'
test
test
ls
ENDFTP
END2
ENDSSH
(Ich denke, das sollte funktionieren)
Siehe auch http://tldp.org/LDP/abs/html/here-docs.html
7 Stimmen
Die gleiche Frage wurde bereits auf serverfault gestellt: serverfault.com/questions/215756/ Es hat also wahrscheinlich keinen Sinn, diese Frage zu migrieren.
9 Stimmen
Auf die Frage zu Server Fault gibt es allerdings nicht so viele Antworten. Vielleicht sollte diese Frage diese ersetzen.
5 Stimmen
Mir persönlich gefällt diese Antwort: unix.stackexchange.com/questions/87405/
27 Stimmen
Außerdem sollte es natürlich zum Thema passen, da ssh ein wichtiges Werkzeug für die Softwareentwicklung ist.
1 Stimmen
@tripleee, danke, dass Sie mich daran erinnern, eine "Wiedereröffnungs"-Stimme abzugeben.
5 Stimmen
Kaffee- und ssh-Fragen haben nicht den gleichen Grad an Off-Topicness auf SO. Ich habe für die Wiedereröffnung gestimmt.
0 Stimmen
Kann sich jemand zum ENDSSH-Tag äußern, bitte?
1 Stimmen
@adam-lear, ich denke, diese Frage sollte geöffnet werden. Ich habe die Frage so geändert, dass sie zu Stackoverflow passt. Die beliebteste Antwort hier funktioniert nicht wirklich, wenn man versucht, ein lokales Skript auf einem entfernten Widows-Rechner auszuführen und wenn es mehrere Zeilen hat. Ich habe einen Weg gefunden, und würde die Lösung gerne zur Verfügung stellen. Auch wenn es einen anderen Beitrag auf serverfault gibt, werden die meisten Leute wegen der Popularität dieser Frage hierher kommen, so dass es für die Besucher sehr hilfreich ist, sicherzustellen, dass diese Frage auf dem neuesten Stand ist.
1 Stimmen
@alpha_989 Das ist fair. Ich habe diese Frage in meinen noch nicht ganz zwei Monaten als Community-Moderator einseitig geschlossen. Das ist kein Berg, auf dem ich jetzt sterben möchte :) Ich werde sie wieder öffnen, obwohl das keine Garantie dafür ist, dass sie offen bleibt, wenn die Community im Allgemeinen nicht damit einverstanden ist. Wenn es wieder geschlossen wird, schlage ich vor, es zu Meta-Stapelüberlauf für eine Diskussion.