1436 Stimmen

Wie kann man SSH verwenden, um ein lokales Shell-Skript auf einem entfernten Rechner auszuführen?

Ich muss ein lokales Shell-Skript (Windows/Linux) auf einem entfernten Rechner ausführen.

Ich habe SSH sowohl auf Rechner A als auch auf Rechner B konfiguriert. Mein Skript befindet sich auf Rechner A, der einen Teil meines Codes auf einem entfernten Rechner, Rechner B, ausführen wird.

Die lokalen und entfernten Computer können entweder Windows- oder Unix-basierte Systeme sein.

Gibt es eine Möglichkeit, dies mit plink/ssh zu tun?

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/

28voto

Jason R. Coombs Punkte 38667

Ich habe begonnen, die Stoff für anspruchsvollere Operationen. Fabric erfordert Python und einige andere Abhängigkeiten, allerdings nur auf dem Client-Rechner. Der Server muss nur ein ssh-Server sein. Ich finde dieses Tool viel leistungsfähiger als Shell-Skripte, die an SSH weitergereicht werden, und es ist die Mühe der Einrichtung wert (besonders wenn Sie gerne in Python programmieren). Fabric ermöglicht die Ausführung von Skripten auf mehreren Hosts (oder Hosts mit bestimmten Rollen), erleichtert idempotente Operationen (z. B. das Hinzufügen einer Zeile zu einem Konfigurationsskript, aber nicht, wenn sie bereits vorhanden ist) und erlaubt die Konstruktion komplexerer Logik (wie sie die Sprache Python bieten kann).

25voto

cglotr Punkte 824
cat ./script.sh | ssh <user>@<host>

1 Stimmen

Interessanterweise ist diese Methode "cat script.sh | ssh user@host" die einzige, die bei mir funktioniert, um ein Shell-Skript auf einem anderen Rechner auszuführen. Die Methode "bash" < script.sh funktioniert nicht richtig, aber ich habe keine Zeit damit verbracht, dieses Problem zu lösen. Ich habe das Skript sogar auf den entfernten Host kopiert und erhalte die Meldung "Datei nicht gefunden", obwohl es funktioniert, wenn ich mich auf dem Host anmelde und das Skript ausführe.

15voto

Anton Kornus Punkte 369
chmod +x script.sh    
ssh -i key-file root@111.222.3.444 < ./script.sh

11voto

Jeremy Punkte 135

Versuchen Sie zu laufen ssh user@remote sh ./script.unx .

12 Stimmen

Dies funktioniert nur, wenn sich das Skript im Standardverzeichnis (Home) der Gegenstelle befindet. Ich denke, die Frage ist, wie man ein lokal gespeichertes Skript auf der Gegenstelle ausführt.

1 Stimmen

Ssh benutzername@ip "chmod +x script.sh" <br/> ssh benutzername@ip "Pfad zur sh-Datei im entfernten Rechner"

8voto

Dexygen Punkte 12014

Wenn Sie meinen, dass Sie dies automatisch von einem "lokalen" Rechner aus tun wollen, ohne sich manuell auf dem "entfernten" Rechner anzumelden, sollten Sie sich eine TCL-Erweiterung namens Expect ansehen, die genau für diese Art von Situation entwickelt wurde. Ich habe auch einen Link zu einem Skript für die Anmeldung/Interaktion über SSH angegeben.

https://www.nist.gov/services-resources/software/expect

http://bash.cyberciti.biz/security/expect-ssh-login-script/

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X