有没有办法打开Linux/Unix系统上可用的文件,并使用Java将所有异常复制到文本文件中

有没有办法打开Linux/Unix系统上可用的文件,并使用Java将所有异常复制到文本文件中,java,ssh,Java,Ssh,我正在尝试创建一个程序,它将打开Linux/Unix系统中可用的日志文件,并将所有异常跟踪复制到另一个文件中。以下是我已完成的命令/步骤 登录到Linux/Unix 打开日志文件目录 打开日志文件 以下步骤待定 搜索异常并将跟踪复制到另一个文件中 示例代码: public static void main(String[] args) { String host="hostname"; String user="sshuser&

我正在尝试创建一个程序,它将打开Linux/Unix系统中可用的日志文件,并将所有异常跟踪复制到另一个文件中。以下是我已完成的命令/步骤

  • 登录到Linux/Unix
  • 打开日志文件目录
  • 打开日志文件
  • 以下步骤待定

  • 搜索异常并将跟踪复制到另一个文件中
  • 示例代码:

       public static void main(String[] args) {
            String host="hostname";
            String user="sshuser";
            String password="sshpwd";
            String command1="cd /usr/logs; view myLogs.log; ";
            try{
                
                java.util.Properties config = new java.util.Properties(); 
                config.put("StrictHostKeyChecking", "no");
                JSch jsch = new JSch();
                Session session=jsch.getSession(user, host, 22);
                session.setPassword(password);
                session.setConfig(config);
                session.connect();
                System.out.println("Connected");
                
                Channel channel=session.openChannel("exec");
                ((ChannelExec)channel).setCommand(command1);
                channel.setInputStream(null);
                ((ChannelExec)channel).setErrStream(System.err);
                
                InputStream in=channel.getInputStream();
                channel.connect();
                byte[] tmp=new byte[1024];
                while(true){
                  while(in.available()>0){
                    int i=in.read(tmp, 0, 1024);
                    if(i<0)break;
                    System.out.print(new String(tmp, 0, i));
                  }
                  if(channel.isClosed()){
                    System.out.println("exit-status: "+channel.getExitStatus());
                    break;
                  }
                  try{Thread.sleep(1000);}catch(Exception ee){}
                }
                channel.disconnect();
                session.disconnect();
                System.out.println("Execution DONE");
            }catch(Exception e){
                e.printStackTrace();
            }
    
    
    
    }
    
    publicstaticvoidmain(字符串[]args){
    字符串host=“主机名”;
    字符串user=“sshuser”;
    字符串password=“sshpwd”;
    String command1=“cd/usr/logs;查看myLogs.log;”;
    试一试{
    java.util.Properties config=new java.util.Properties();
    配置放置(“检查”、“否”);
    JSch JSch=新的JSch();
    Session Session=jsch.getSession(用户,主机,22);
    session.setPassword(密码);
    session.setConfig(config);
    session.connect();
    System.out.println(“已连接”);
    Channel=session.openChannel(“exec”);
    ((ChannelExec)channel.setCommand(command1);
    channel.setInputStream(空);
    ((ChannelExec)channel.setErrStream(System.err);
    InputStream in=channel.getInputStream();
    channel.connect();
    字节[]tmp=新字节[1024];
    while(true){
    while(in.available()>0){
    inti=in.read(tmp,0,1024);
    
    如果(这是一个需求列表。你有什么实际问题吗?到目前为止你做了什么?1.登录到Linux/Unix 2.打开日志文件目录3.打开上面的日志文件。事情已经完成,所以你的实际问题只是“给定一个打开的文件,我如何找到其中的所有堆栈跟踪”?将问题重点放在您需要帮助的实际细节上是很重要的。请使用该细节更新您的问题,并在您认为需要继续的地方添加一些代码。这是一个要求列表。您有任何实际问题吗?到目前为止您做了什么?1.登录到Linux/Unix 2.打开日志文件目录3.打开上面的日志文件ng已完成,因此您的实际问题只是“给定一个打开的文件,如何查找其中的所有StackTrace”?重要的是将问题集中在您需要帮助的实际细节上。请使用该细节更新您的问题,并在您认为需要继续的地方添加一些代码。