¿Cómo puedo automatizar esta tarea?
1) Estás en A. 2) Entras en B. 3) Ejecutas un script en B, que necesita un parámetro conocido en A.
Primero, pensé que tal vez podría enviar el valor cuando abrí la conexión con ssh. Luego, probablemente más simple, entre 1) y 2), scp todo el script a la misma ubicación en B (reemplazando el anterior). Pero aún así, ¿cómo ejecuto el script en B? (Es decir, cómo automatizar ese último paso. Por supuesto, podría ejecutarlo manualmente después de ssh).
Otro pensamiento, tal vez descartar ssh por completo: tengo una página web en B, entonces, ¿podría el script de alguna manera ser invocado a través de una interfaz web "bajo el capó"?
¿O lo harías de una manera completamente diferente?
Respuestas:
Esto se ejecutará
myscript foobar
en el servidor.fuente
~/.elm/aliases
)."
) en lugar de simples ('
) es importante aquí. El uso de double significa que el shell en su máquina local expandirá la variable y luego ejecutará elssh
comando. Si se usaran los únicos, el shell local no tocaría el comando, que se envía textualmente pero aún se expande en el shell remoto.$myparameter
contiene espacios, se dividirá en el lado del servidor. Bashprintf
tiene un%q
formato que puedes usar. Tengo un código de ejemplo, pero no cabe aquí. Crearé una nueva respuesta para ello.(Este es un seguimiento de mi comentario sobre la respuesta aceptada ).
Tenga en cuenta que si
$myparameter
contiene espacios, se dividirá en el lado del servidor. El printf de Bash tiene un%q
formato que puedes usar. Ejemplo:fuente
Si es seguro asumir que
$myparameter
va a no contener comillas simples (de lo contrario ver aquí o utilice laprintf '%q' ...
solución mediante janmoesen), puede simplemente hay que poner comillas simples$myparameter
para evitar el problema de Split-on-espacio en el lado del servidor.fuente