bash shell ssh putty plink

bash - Ejecute script de shell(con parámetros) en la línea de comandos de Windows a través de Plink



ssh putty (2)

¿Has intentado poner el comando y el argumento entre comillas?

es decir, -m "C: / myscript.sh 5"

Necesito ejecutar un script de shell de forma remota dentro de la caja de Linux desde Windows

#!/bin/bash if [ "$#" -ne 1 ]; then echo "Illegal number of parameters" exit fi echo "$1"

Aquí está el comando que ejecuté desde el símbolo del sistema de Windows

cmd> plink.exe -ssh username@host -pw gbG32s4D/ -m C:/myscript.sh 5

Estoy obteniendo salida como

"Número ilegal de parámetros"

¿Hay alguna manera de pasar el parámetro de la línea de comandos al script de shell que se ejecutará en el servidor remoto?


No comprende cómo funciona el -m .

Es solo una forma de hacer que plink cargue los comandos para enviar al servidor desde un archivo local.

El archivo NO se carga y ejecuta en el servidor remoto (con argumentos).

Su contenido se lee localmente y se envía al servidor y se ejecuta allí como si lo hubiera escrito en una línea de comando (remota). No puedes darle argumentos.

Una solución alternativa es generar el archivo sobre la marcha localmente antes de ejecutar plink desde un archivo por lotes (por ejemplo, run.bat ):

echo echo %1 > script.tmp plink.exe -ssh username@host -pw gbG32s4D/ -m script.tmp

Luego ejecute el archivo por lotes con el argumento:

run.bat 5

Lo anterior hará que el script ejecute echo 5 en el servidor.

Si el script es complejo, en lugar de ensamblarlo localmente, téngalo listo en el servidor (como sugirió @MarcelKuiper) y ejecute solo el script a través de Plink.

plink.exe -ssh username@host -pw gbG32s4D/ "./myscript.sh %1"

En este caso, cuando ejecutamos solo un comando, puede pasarlo en la línea de comando Plink, incluidos los argumentos. No tiene que usar el -m con un archivo (temporal).