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