it-swarm.com.de

Beste Möglichkeit, Remote-SSH-Befehle in Batch (Windows) zu erstellen

Ich suche ein Skript im Batch, das Remote-SSH-Befehle unter Linux ausführen muss. Ich möchte, dass die Ausgabe zurückgegeben wird, sodass ich sie entweder auf dem Bildschirm anzeigen oder protokollieren kann.

Ich habe PuTTY.exe -ssh [email protected] -pw password -m command_run versucht, aber es wird nichts auf meinem Bildschirm angezeigt.

Hat das schon mal jemand gemacht?

18
leeman24

Der -m-Schalter von PuTTY verwendet einen -Pfad zu einer Skriptdatei als Argument, nicht als command.

Referenz: https://the.earth.li/~sgtatham/PuTTY/latest/htmldoc/Chapter3.html#using-cmdline-m

Sie müssen also Ihren Befehl (command_run) in einer Textdatei (z. B. c:\path\command.txt) speichern und an PuTTY übergeben:

PuTTY.exe -ssh [email protected] -pw password -m c:\path\command.txt

Beachten Sie jedoch, dass Sie Plink (ein Befehlszeilen-Verbindungstool aus der PuTTY-Suite) verwenden sollten. Da es sich um eine Konsolenanwendung handelt, können Sie die Ausgabe in eine Datei umleiten (was Sie mit PuTTY nicht tun können).

Eine Befehlszeilensyntax ist identisch, eine Umleitung für die Ausgabe wurde hinzugefügt:

plink.exe -ssh [email protected] -pw password -m c:\path\command.txt > output.txt

Siehe Verwenden des Befehlszeilen-Verbindungstools Plink .

Und mit Plink können Sie den Befehl tatsächlich direkt in der Befehlszeile eingeben:

plink.exe -ssh [email protected] -pw password command > output.txt

Ähnliche Fragen:
Automatisieren des Befehls unter Linux unter Windows mit PuTTY
Befehl in Plink aus einer Batchdatei ausführen

31
Martin Prikryl

Sie können auch Bash on Ubuntu on Windows direkt verwenden. Z.B.,

bash -c "ssh -t [email protected] 'cd /; Sudo my-command'"

Per Martin Prikryls Kommentar unten:

Das -t ermöglicht die Terminalemulation. Ob Sie die Terminalemulation für Sudo benötigen, hängt von der Konfiguration ab (und Sie benötigen sie standardmäßig nicht, während viele Distributionen die Standardeinstellung überschreiben). Im Gegensatz dazu benötigen viele andere Befehle eine Terminalemulation.

2
Jon49

Als Alternative können Sie OpenSSH http://www.mls-software.com/opensshd.html installieren und dann einfach ssh [email protected] -pw password -m command_run

Bearbeiten: Wählen Sie nach der Antwort von user2687375 bei der Installation nur Client aus. Sobald dies erledigt ist, sollten Sie SSH vom Befehl aus initiieren können.

Dann können Sie ein SSH-Batch-Skript wie erstellen

ECHO OFF
CLS
:MENU
ECHO.
ECHO ........................
ECHO SSH servers
ECHO ........................
ECHO.
ECHO 1 - Web Server 1
ECHO 2 - Web Server 2
ECHO E - EXIT
ECHO.

SET /P M=Type 1 - 2 then press ENTER:
IF %M%==1 GOTO WEB1
IF %M%==2 GOTO WEB2
IF %M%==E GOTO EOF

REM ------------------------------
REM SSH Server details
REM ------------------------------

:WEB1
CLS
call ssh [email protected]
cmd /k

:WEB2
CLS
call ssh [email protected]
cmd /k
1
campervancoder