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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/email/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
Java 尝试通过SSH连接androidTV_Java_Ssh - Fatal编程技术网

Java 尝试通过SSH连接androidTV

Java 尝试通过SSH连接androidTV,java,ssh,Java,Ssh,我在SSH连接方面有一些问题,我已经在我的androidTV(它的根目录)上启动了SSH服务器,我看到了连接,但是命令没有在设备上运行。我想在AndroidTV上运行vlc流。如果我使用腻子连接,我没有问题,但我的程序不工作。我在用jcaft 这是connect的课程 private void doCommonConstructorActions(String userName, String password, String connectionIP, St

我在SSH连接方面有一些问题,我已经在我的androidTV(它的根目录)上启动了SSH服务器,我看到了连接,但是命令没有在设备上运行。我想在AndroidTV上运行vlc流。如果我使用腻子连接,我没有问题,但我的程序不工作。我在用jcaft

这是connect的课程

      private void doCommonConstructorActions(String userName, 
           String password, String connectionIP, String knownHostsFileName)
      {
         jschSSHChannel = new JSch();

         try
         {
            jschSSHChannel.setKnownHosts(knownHostsFileName);
         }
         catch(JSchException jschX)
         {
            logError(jschX.getMessage());
         }

         strUserName = userName;
         strPassword = password;
         strConnectionIP = connectionIP;
      }

      public SSHManager(String userName, String password, 
         String connectionIP, String knownHostsFileName)
      {
         doCommonConstructorActions(userName, password, 
                    connectionIP, knownHostsFileName);
         intConnectionPort = 2222;
         intTimeOut = 10000;
      }

      public SSHManager(String userName, String password, String connectionIP, 
         String knownHostsFileName, int connectionPort)
      {
         doCommonConstructorActions(userName, password, connectionIP, 
            knownHostsFileName);
         intConnectionPort = connectionPort;
         intTimeOut = 60000;
      }

      public SSHManager(String userName, String password, String connectionIP, 
          String knownHostsFileName, int connectionPort, int timeOutMilliseconds)
      {
         doCommonConstructorActions(userName, password, connectionIP, 
             knownHostsFileName);
         intConnectionPort = connectionPort;
         intTimeOut = timeOutMilliseconds;
      }

      public String connect()
      {
         String errorMessage = null;

         try
         {
            sesConnection = jschSSHChannel.getSession(strUserName, 
                strConnectionIP, intConnectionPort);
            sesConnection.setPassword(strPassword);
            // UNCOMMENT THIS FOR TESTING PURPOSES, BUT DO NOT USE IN PRODUCTION
            //Properties config = new Properties();
            //config.put("StrictHostKeyChecking", "no");
            //config.put("PreferredAuthentications", "password");
            //sesConnection.setConfig(config);
            sesConnection.setConfig("StrictHostKeyChecking", "no");
            sesConnection.connect(intTimeOut);
         }
         catch(JSchException jschX)
         {
            errorMessage = jschX.getMessage();
         }

         return errorMessage;
      }

      private String logError(String errorMessage)
      {
         if(errorMessage != null)
         {
            LOGGER.log(Level.SEVERE, "{0}:{1} - {2}", 
                new Object[]{strConnectionIP, intConnectionPort, errorMessage});
         }

         return errorMessage;
      }

      private String logWarning(String warnMessage)
      {
         if(warnMessage != null)
         {
            LOGGER.log(Level.WARNING, "{0}:{1} - {2}", 
               new Object[]{strConnectionIP, intConnectionPort, warnMessage});
         }

         return warnMessage;
      }

      public String sendCommand(String command)
      {
         StringBuilder outputBuffer = new StringBuilder();

         try
         {
            Channel channel = (Channel) sesConnection.openChannel("exec");
            ((ChannelExec)channel).setCommand(command);
            InputStream commandOutput = ((com.jcraft.jsch.Channel) channel).getInputStream();
            channel.connect();
            int readByte = commandOutput.read();

            while(readByte != 0xffffffff)
            {
               outputBuffer.append((char)readByte);
               readByte = commandOutput.read();
            }

            channel.disconnect();
         }
         catch(IOException ioX)
         {
            logWarning(ioX.getMessage());
            return null;
         }
         catch(JSchException jschX)
         {
            logWarning(jschX.getMessage());
            return null;
         }

         return outputBuffer.toString();
      }
      
      
      public String sendCommandWithoutResult(String command)
      {

         try
         {
            Channel channel = (Channel) sesConnection.openChannel("exec");
            ((ChannelExec)channel).setCommand(command);
            channel.connect();

            channel.disconnect();
         }
         catch(JSchException jschX)
         {
            logWarning(jschX.getMessage());
            return null;
         }

         return "+";
      }

      public void close()
      {
         sesConnection.disconnect();
      }
}

这是一个使用connect的类

public static void main(String[] args) 
{
    // TODO Auto-generated method stub
    System.out.println("sendCommand");

  
    sendTo("su \n am start -n org.videolan.vlc/org.videolan.vlc.gui.video.VideoPlayerActivity -e -a android.intent.action.VIEW -d  http://link",
            "192.168.0.105");
}

private static void sendTo(String command, String ip)
{
     String userName = "user";
     String password = "user";
     String connectionIP = ip;
     
     SSHManager instance = new SSHManager(userName, password, connectionIP,"",2222);
     String errorMessage = instance.connect();
     System.out.println(errorMessage + command + " ; " + userName +" ; "+ password +" ; "+ connectionIP);

     if(errorMessage != null)
     {
        System.out.println(errorMessage);
        //fail();
     }

     String expResult = "FILE_NAME\n";
    
     String result = instance.sendCommand(command);
     // close only after all commands are sent
     instance.close();
     System.out.println(connectionIP+" +");
     System.out.println(expResult + ": " + result+"\n");
    
}

}

这是相当模糊的。运行此代码时会发生什么情况?您是否收到任何错误或异常?程序仍在运行,没有异常和错误。但正在等待,其中“String result=instance.sendCommand(command);”