Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ssh/2.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
Unix ssh连接到服务器,并且必须获取服务器中给定字符串的计数_Unix_Ssh - Fatal编程技术网

Unix ssh连接到服务器,并且必须获取服务器中给定字符串的计数

Unix ssh连接到服务器,并且必须获取服务器中给定字符串的计数,unix,ssh,Unix,Ssh,我在server1中有一个unix脚本,它通过ssh连接到另一个server2和grep,并对文件中的一些字符串进行计数,并且必须将计数返回到server1中的不同文件(server2中的不同字符串计数) sshusername@server2 grep'string1'文件1 | wc-l>>文件2(在服务器1中) grep'string2'文件1 | wc-l>>文件3(在服务器1中) grep'string3'文件1 | wc-l>>文件4(在服务器1中) 正如我已经在server2中一样

我在server1中有一个unix脚本,它通过ssh连接到另一个server2和grep,并对文件中的一些字符串进行计数,并且必须将计数返回到server1中的不同文件(server2中的不同字符串计数)

sshusername@server2

grep'string1'文件1 | wc-l>>文件2(在服务器1中)

grep'string2'文件1 | wc-l>>文件3(在服务器1中)

grep'string3'文件1 | wc-l>>文件4(在服务器1中)

正如我已经在server2中一样,脚本返回为file2、file3和file4未找到

但我能做到以下几点:

sshusername@server2grep'string1'文件1 | wc-l>>文件2(在服务器1中)

sshusername@server2grep'string2'文件1 | wc-l>>文件3(在服务器1中)

sshusername@server2grep'string3'文件1 | wc-l>>文件4(在服务器1中)

但是我只需要连接到服务器2一次,并且我必须获得文件2、文件3和文件4中的计数


有没有其他方法可以让我只连接一次server2?

shh
在远程服务器上执行命令。输出返回到server1

在您的情况下,命令应该是
grep'string1'file1
。输出处理在server1上完成,因此file1位于server1上

只需一次登录,就可以组合命令(引用以告诉ssh整个字符串将在远程执行)

然后,所有命令的输出返回到server1并进入文件。这取决于你把它分开


如果您只引用了
“grep'string1'file1 | wc-l”
,则应在server2上进行计数,并且只返回结果。重复登录可能不再是问题。(我假设grep的大结果集将通过网络移动)

非常感谢。重复登录需要更多的时间(239秒),但您给出的代码需要6秒。再次感谢你
ssh username@server2 "grep ... | wc -l; grep...; grep ..."` >> server1.log