
Quiero ejecutar un archivo .sh que tome un argumento en una máquina Linux. Estoy usando plink.exe para ejecutar este archivo .sh desde una máquina con Windows. Pero no sé qué escribir en el archivo por lotes para ejecutar plink.exe, que a su vez ejecuta el archivo .sh y este argumento del archivo.
He escrito el siguiente comando por lotes:
@echo off
start C:\Users\Prateek\Desktop\PLINK.EXE -ssh -P 22 user@host -pw password sh -x "/home/user/copy.sh"
Al ejecutarlo me sale:
+ echo ''
+ echo 'Enter partner id'
Enter partner id
+ read pid
:
En realidad, 'Ingresar ID de socio' es el argumento que debo aprobar.
Respuesta1
Todavía no entiendo realmente lo que quieres, pero haré algunas suposiciones, luego podremos ver cómo va ;-) Desafortunadamente, tampoco tengo un shell de Windows disponible, por lo que mi Batch foo podría ser un poco, especialmente con respecto a las citas, doblemente si las cosas contienen espacios. Las ediciones son bienvenidas.
Entiendo que desea proporcionar un argumento de línea de comando a su archivo por lotes. Esto estará disponible dentro del archivo por lotes como
%1
.Supongo que la cadena obtenida en el párrafo anterior debe suministrarse al script de shell de UNIX como entrada. Esto se puede (por ejemplo) hacer en el shell de inicio de sesión en el cuadro de Linux canalizando un comando echo al segundo shell.
Pruebe la siguiente modificación:
start C:\Users\Prateek\Desktop\PLINK.EXE -ssh -P 22 user@host -pw password echo %1 ^| sh -x "/home/user/copy.sh"
Si se invoca como mybatch.bat SomeText
, debería ejecutar lo siguiente en un shell en el host remoto:
echo SomeText | sh -x /home/user/copy.sh
que se ejecuta copy.sh
y hace pensar que alguien escribió SomeText
en un teclado.