繁体   English   中英

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

[英]Executing command remotely on another linux server from a shell script

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

当命令直接在服务器上执行时,它会生成所需的输出,但在远程执行时则不会生成。
所以我的问题是我将如何获得正确的输出,这是实现这一目标的好方法吗?

从上面的评论中,您仍在使用“ echo”。 @tripleee是正确的。 别。 也不要在一开始就使用毫无意义的猫-只需将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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM