Ejecutar un comando de forma remota en otro servidor Linux desde un script de shell

Ejecutar un comando de forma remota en otro servidor Linux desde un script de shell

Tengo un script de shell que extrae detalles de un archivo de registro entre dos fechas y ejecuta un comando en la salida para generar algún informe. Los archivos de registro están en un servidor diferente y los scripts se ejecutan en un servidor diferente. el guión se ve así:

#!/bin/sh
time1=$1
time2=$2
echo `ssh -i key  user@ip -yes cat file | awk '{if(substr($4,2)>="'$time1'" && substr($4,2)<="'$time2'") print $0;}'` > tmp.log

`cat tmp.log | some operation to get detail`

Se espera que el resultado sea como:

ip1 date1 - - request1 file1 method1 status1 
ip2 date2 - - request2 file2 method2 status2

es decir, varias líneas pero el resultado generado es una sola línea que contiene todos los detalles como:

 ip1 date1 - - request1 file1 method1 status1 ip2 date2 - - request2 file2 method2 status2

Cuando se ejecuta el mismo comando directamente en el servidor, genera el resultado deseado, pero no cuando se ejecuta de forma remota.
Entonces, mi pregunta es ¿cómo obtendría el resultado correcto? ¿Es esta una buena manera de hacerlo?

Respuesta1

Como se explica en varios lugares (como estehttp://unix.derkeiler.com/Newsgroups/comp.unix.shell/2007-05/msg00584.html) echo genera sus argumentos separados por espacios

Por lo tanto, debe pasar el resultado del comando entre comillas invertidas como un argumento.

echo "`some command that outputs multiple lines here`"

O no usar echopero por ejemploprintf

información relacionada