it-swarm-eu.dev

Il modo migliore per eseguire script di comandi SSH remoti in Batch (Windows)

Sto cercando di scrivere qualcosa in batch che dovrà eseguire comandi ssh remoti su Linux. Vorrei che l'output fosse restituito, così posso visualizzarlo sullo schermo o registrarlo.

Ho provato PuTTY.exe -ssh [email protected] -pw password -m command_run ma non restituisce nulla sul mio schermo.

Qualcuno ha fatto prima?

18
leeman24

L'opzione -m di PuTTY utilizza un percorso per un file di script come argomento, non un comando.

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

Quindi devi salvare il comando (command_run) in un file di testo semplice (ad esempio c:\path\command.txt) e passarlo a PuTTY:

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

Sebbene si noti che è necessario utilizzare Plink (uno strumento di connessione da riga di comando dalla suite PuTTY). È un'applicazione console, quindi puoi reindirizzare il suo output su un file (cosa non puoi fare con PuTTY).

Una sintassi della riga di comando è identica, è stato aggiunto un reindirizzamento dell'output:

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

Vedi Usare lo strumento di connessione a linea di comando Plink .

E con Plink, puoi effettivamente fornire il comando direttamente sulla sua riga di comando:

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

Domande simili:
Automatizzare il comando di esecuzione su Linux da Windows usando PuTTY
Esecuzione del comando in Plink da un file batch

31
Martin Prikryl

Puoi anche usare direttamente Bash on Ubuntu on Windows. Per esempio.,

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

Il commento di Per Martin Prikryl qui sotto:

-T abilita l'emulazione del terminale. Se hai bisogno dell'emulazione del terminale per Sudo dipende dalla configurazione (e di default non ne hai bisogno, mentre molte distribuzioni sovrascrivono quelle predefinite). Al contrario, molti altri comandi richiedono l'emulazione del terminale.

2
Jon49

Come opzione alternativa è possibile installare OpenSSH http://www.mls-software.com/opensshd.html e quindi semplicemente ssh [email protected] -pw password -m command_run

Modifica: dopo una risposta da user2687375 durante l'installazione, selezionare solo client. Una volta fatto, dovresti essere in grado di avviare SSH dal comando.

Quindi è possibile creare uno script batch ssh come

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