通过 shell 脚本在另一台 Linux 服务器上远程执行命令

通过 shell 脚本在另一台 Linux 服务器上远程执行命令

我有一个 shell 脚本,它从两个日期之间的日志文件中提取详细信息,并对输出执行命令以生成一些报告。日志文件位于不同的服务器上,脚本在不同的服务器上执行。脚本如下所示:

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

相关内容