Tengo que ejecutar un script de shell (windows/Linux) en una máquina remota.
Tengo SSH configurado tanto en la máquina A como en la B. Mi script está en la máquina A que ejecutará parte de mi código en una máquina remota, la máquina B.
Los ordenadores local y remoto pueden ser sistemas basados en Windows o Unix.
¿Hay alguna manera de ejecutar esto usando plink/ssh?
<hostA_shell_prompt>$ ssh user@hostB "ls -la"
Eso le pedirá la contraseña, a menos que haya copiado la clave pública de su usuario hostA en el archivo authorized_keys en el directorio home del usuario .ssh. Eso permitirá la autenticación sin contraseña (si se acepta como método de autenticación en la configuración del servidor ssh)
Asumiendo que quieres hacer esto automáticamente desde una máquina "local", sin entrar manualmente en la máquina "remota", deberías mirar una extensión de TCL conocida como Expect, está diseñada precisamente para este tipo de situaciones. También he proporcionado un enlace a un script para iniciar sesión/interactuar a través de SSH.
En primer lugar, copie el script a la máquina B utilizando scp
[usuario@máquinaA]$ scp /ruta/a/script usuario@máquinaB:/home/usuario/ruta
A continuación, ejecute el script
[usuario@máquinaA]$ ssh usuario@máquinaB "/home/usuario/ruta/script"
Esto funcionará si has dado permiso de ejecución al script.