Saltar al contenido

La mejor manera de escribir comandos SSH remotos en Batch (Windows)

Luego de de una prolongada recopilación de información dimos con la solución esta contrariedad que suelen tener muchos de nuestros lectores. Te regalamos la solución y nuestro deseo es serte de mucha ayuda.

Solución:

los -m interruptor de PuTTY toma un ruta a un archivo de script como un argumento, no como un mando.

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

Así que tienes que guardar tu comando (command_run) a un archivo de texto sin formato (p. ej. c:pathcommand.txt) y pásalo a PuTTY:

putty.exe -ssh [email protected] -pw password -m c:pathcommand.txt

Aunque tenga en cuenta que debe usar Plink (una herramienta de conexión de línea de comandos de la suite PuTTY). Es una aplicación de consola, por lo que puede redirigir su salida a un archivo (lo que no puede hacer con PuTTY).

Una sintaxis de línea de comandos es idéntica, se agregó una redirección de salida:

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

Consulte Uso de la herramienta de conexión de línea de comandos Plink.

Y con Plink, puede proporcionar el comando directamente en su línea de comandos:

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

Preguntas similares:
Automatización de comandos en ejecución en Linux desde Windows usando PuTTY
Ejecutando comando en Plink desde un archivo por lotes

Como opción alternativa, puede instalar OpenSSH http://www.mls-software.com/opensshd.html y luego simplemente ssh [email protected] -pw password -m command_run

Editar: después de una respuesta del usuario 2687375 al instalar, seleccione solo cliente. Una vez hecho esto, debería poder iniciar SSH desde el comando.

Luego puede crear un script por lotes ssh como

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

También puedes usar Bash on Ubuntu on Windows directamente. P.ej,

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

Según el comentario de Martin Prikryl a continuación:

El -t habilita la emulación de terminal. Si necesita la emulación de terminal para sudo depende de la configuración (y de forma predeterminada no la necesita, mientras que muchas distribuciones anulan el valor predeterminado). Por el contrario, muchos otros comandos necesitan emulación de terminal.

Eres capaz de asentar nuestro quehacer exponiendo un comentario o valorándolo te lo agradecemos.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *