Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从shell脚本在另一台linux服务器上远程执行命令_Linux_Bash_Shell_Ssh_Server - Fatal编程技术网

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

从shell脚本在另一台linux服务器上远程执行命令,linux,bash,shell,ssh,server,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.

我有一个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是正确的。不要。另外,不要在开始时使用无意义的cat,只需将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
#/垃圾箱/垃圾箱
时间1=1美元
时间2=2美元

ssh-i密钥user@ip-是cat文件| awk'{if(substr($4,2)>=“$time1”&&substr($4,2)backticks中的
echo
不仅愚蠢,而且错误。只需将
echo`which`
替换为
which
。另请参阅删除backticks不会产生任何输出。谢谢,我得到了它backticks忽略了\n。因此我所做的是在内部添加了命令“”。如下:
echo`command`