Frage

Wenn ich versuche, eine zu verwenden ssh Befehl in einem Shell-Skript ausführen, bleibt der Befehl einfach dort.Haben Sie ein Anwendungsbeispiel? ssh in einem Shell-Skript?

War es hilfreich?

Lösung

Hängt davon ab, was Sie tun möchten und wie Sie es verwenden.Wenn Sie einen Befehl einfach aus der Ferne und sicher auf einem anderen Computer ausführen möchten, verwenden Sie einfach

ssh user@host command

Zum Beispiel

ssh user@host ls

Um dies sicher zu tun, müssen Sie den Benutzer entweder während der Laufzeit nach dem Passwort fragen oder Schlüssel auf dem Remote-Host einrichten.

Andere Tipps

Zunächst müssen Sie sicherstellen, dass Sie die passwortlose Anmeldung (Anmeldung mit öffentlichem Schlüssel) eingerichtet haben.Es gibt mindestens zwei SSH-Varianten mit leicht unterschiedlichen Konfigurationsdateiformaten.Überprüf den ssh Hilfeseite auf Ihrem System, konsultieren Sie Ihren lokalen Systemadministrator oder gehen Sie zu Wie richte ich die Public-Key-Authentifizierung ein?.

Laufen ssh Im Batch-Modus (z. B. innerhalb eines Shell-Skripts) müssen Sie einen Befehl übergeben, der ausgeführt werden soll.Die Syntax lautet:

ssh host command

Wenn Sie mehr als einen Befehl gleichzeitig ausführen möchten, verwenden Sie Anführungszeichen und Semikolons:

ssh host "command1; command2"

Die Anführungszeichen werden benötigt, um die Semikolons vor dem Shell-Interpreter zu schützen.Wenn Sie sie weglassen würden, würde nur der erste Befehl remote ausgeführt und der Rest würde auf dem lokalen Computer ausgeführt.

Sie können verwenden expect Befehl zum Ausfüllen der Benutzernamen-/Passwortinformationen.

Sie müssen Ihren öffentlichen SSH-Schlüssel eingeben ~/.ssh/authorized_keys Datei auf dem Remote-Host.Dann können Sie ohne Passwort eine SSH-Verbindung zu diesem Host herstellen.

Alternativ können Sie verwenden ssh-agent.Ich würde davon abraten, das Passwort im Skript zu speichern.

Der einfachste Weg ist die Verwendung eines Zertifikats für den Benutzer, der das Skript ausführt.

Eine komplexere Möglichkeit besteht darin, das Passwort zu stdin hinzuzufügen, wenn der Shell-Befehl danach fragt.Erwarten Sie, dass Perl-Bibliotheken dem Benutzer die Eingabeaufforderung anzeigen, in der er nach dem Passwort fragt (zumindest wenn es interaktiv ist), es gibt viele Möglichkeiten.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top