Android JSch会话在两个命令后关闭

时间:2012-01-26 03:11:43

标签: android jsch

我正在尝试从我的应用程序通过ssh运行一些命令。我有一个门解锁器和一个锁定或解锁的脚本。

 public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    new Thread(new Runnable()
    {
        public void run()
        {
            connectSSH();
        }
    }).start();
}

我在一个单独的线程中设置会话,因为你无法在android上的主UI线程中进行网络连接。

 private void connectSSH() 
{
    JSch jsch = new JSch();
    try {
        session = jsch.getSession("door", "my server",22);

    } catch (JSchException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
    session.setPassword("pass");
    session.setConfig("StrictHostKeyChecking", "no");
    try {
        session.connect(40000);
        channel = session.openChannel("exec");
    } catch (JSchException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

}

从这里我只有按钮监听器:

 public void unlock(View view) {
    ((ChannelExec)channel).setCommand("python /home/door/doorUnlocker.py unlock");
    try {
        channel.connect();
    } catch (JSchException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
    channel.disconnect();
}

public void lock(View view) {
    ((ChannelExec)channel).setCommand("python /home/door/doorUnlocker.py lock");
    try {
        channel.connect();
    } catch (JSchException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
    channel.disconnect();
}

我可以解锁,然后锁定门,但之后会话才会关闭,所以当它尝试连接到频道时会引发异常。

感谢您提供的任何帮助。

0 个答案:

没有答案