Ejecutar script local que requiere argumentos en Linux a través de plink

4

¿Es posible ejecutar (desde Windows) un script local con argumentos en un sistema Linux remoto?

Esto es lo que obtuve:

plink 1.2.3.4 -l root -pw mypassword -m hello.sh

¿Hay alguna manera de hacer lo mismo, pero capaz de dar parámetros de entrada a hello.sh?

He intentado muchas cosas, incluyendo:

plink 1.2.3.4 -l root -pw mypassword -m hello.sh input1 input2

En este caso, parece que Plink piensa que input1 y input2 son sus argumentos ... lo cual tiene sentido.

¿Cuáles son mis opciones?

c_maker
fuente

Respuestas:

1

Tuve el mismo problema.

Simplemente puedes escribir esta línea

plink 1.2.3.4 -l root -pw pass " myscript.sh arg1 arg2"

Por ejemplo, tuve que ejecutar un script y dar dos archivos como parámetros.

plink 1.2.3.4 -l root -pw pass " myscript.sh path/to/file1 path/to/file2"

Hari
fuente
No creo que sea el mismo problema que describió OP, en este caso el script ejecutado reside en la máquina remota, ¿no?
martonbognar
0

plinkno ejecuta el script como un script sh ; simplemente envía su contenido como comandos separados, por lo que no hay nada a lo que pueda pasarle argumentos.

Puede evitar esto diciéndole al shell que interprete su stdin como si fuera un archivo:

plink -T ... $SHELL /dev/stdin arg1 arg2 arg3 < hello.sh
Gravedad
fuente
No funciona para mi ¿Se supone que debo reemplazar '$ SHELL' por algo? ¿Se supone que arg1 es el nombre del archivo? He intentado todo tipo de combinaciones, nada parece funcionar. Mi hello.sh se ve así: '#! / Bin / bash echo "Su argumento es" $ 1'.
c_maker
@c_maker: prueba la versión actualizada; y no, $ SHELL se expandirá automáticamente en el servidor, y arg1 es el primer argumento que desea dar.
Grawity
0

Para una descripción más detallada (para ssh) vea esta respuesta .

C:>type script.sh
#!/bin/bash
cd /home/user
echo "hello ${1:-}" > hello.txt

C:>plink user@host -pw password "bash -s" < script.sh "world"

C:>plink user@host -pw password "cat /home/user/hello.txt"
hello world
martonbognar
fuente