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

时间:2015-02-23 09:07:18

标签: linux bash shell ssh server

我有一个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 个答案:

答案 0 :(得分:2)

根据您上面的评论,您仍在使用&#34; echo&#34;。 @tripleee是对的。唐&#39;吨。也不要在开始时使用无意义的猫 - 只需将std重定向到你的下一个命令。

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

some operation to get detail <tmp.log
相关问题