Java grep4J:如何重用 SSH 连接

Java grep4J : how to reuse SSH connections

我正在使用 grep4j 搜索远程服务器中的日志文件,并在用户提供服务器详细信息并从浏览器点击搜索时向用户显示结果。 在我的 servlet 中,我使用下面的代码来为每个搜索请求提供服务,如下所示,

import static org.grep4j.core.Grep4j.constantExpression;
import static org.grep4j.core.Grep4j.grep;
import static org.grep4j.core.fluent.Dictionary.on;
import static org.grep4j.core.fluent.Dictionary.options;
import static org.grep4j.core.fluent.Dictionary.with;

import org.grep4j.core.model.Profile;
import org.grep4j.core.model.ProfileBuilder;
import org.grep4j.core.result.GrepResults;


public class GrepSearcher {

    private Profile remoteProfile = null;
    
    GrepSearcher(){
        
    }
    
    //each request will call this method to initialize an SSH connection
    GrepSearcher(String username, String password,String servername, String searchString){
         this.remoteProfile = ProfileBuilder.newBuilder()
                    .name("DEV LOGS")
                    .filePath("LogFilepath")
                    .onRemotehost(servername)
                    .credentials(username,password)
                    .build();
    }
    
    
    
    public GrepResults getSearchResults(){
        return grep(constantExpression("search query"),on(remoteProfile),with(options()));
    }
}  

与服务器建立的 SSH 连接是否在为搜索请求提供服务后立即关闭?。如果是这样,我应该以某种方式维护配置文件还是隐含地完成?在同一台服务器上打开一个新的 SSH 连接来搜索不同的字符串似乎我做错了什么。

只有少数服务器可供所有用户搜索。那么我怎样才能使这种搜索减少对远程服务器的超载呢? 可能会保留静态配置文件列表并在空闲时间后将其杀死?

提前致谢。

我快速(当然不是那么快)浏览了 grep4j,我必须说没有办法在单个连接上执行多个 grep 命令。 grep4j 的内部仅接受单个命令并从头到尾执行它,从连接建立到连接关闭。

它唯一能做的就是对多个配置文件执行相同的 grep 命令。所以除非你不修改源代码,否则你将能够做你想做的事。抱歉

执行此操作的最佳方法是为 java 搜索不同的全状态 SSH 客户端(不仅是 grep),并从那里执行任何命令。 Google 说有很多这样的库。