쉘 스크립트를 통해 다른 Linux 서버에서 원격으로 명령 실행

쉘 스크립트를 통해 다른 Linux 서버에서 원격으로 명령 실행

두 날짜 사이의 로그 파일에서 세부 정보를 추출하고 출력에 대해 명령을 실행하여 일부 보고서를 생성하는 쉘 스크립트가 있습니다. 로그 파일은 다른 서버에 있고 스크립트는 다른 서버에서 실행됩니다. 스크립트는 다음과 같습니다

#!/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`

예상되는 출력은 다음과 같습니다.

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

즉, 여러 줄이지만 생성된 출력은 다음과 같은 모든 세부 정보를 포함하는 한 줄입니다.

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

서버에서 동일한 명령을 직접 실행하면 원하는 출력이 생성되지만 원격으로 실행될 때는 생성되지 않습니다.
그래서 내 질문은 올바른 출력을 어떻게 얻을 수 있는지, 그리고 이것이 이를 수행하는 좋은 방법인지입니다.

답변1

여러 곳에서 설명했듯이 (이것처럼http://unix.derkeiler.com/Newsgroups/comp.unix.shell/2007-05/msg00584.html) echo는 공백으로 구분된 인수를 출력합니다.

따라서 역따옴표 안의 명령 결과를 하나의 인수로 전달해야 합니다.

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

아니면 사용하지 않지만 echo예를 들어printf

관련 정보