2

我正在尝试从我的应用程序通过 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();
}

我可以解锁,然后锁上门,但之后会话就会关闭,因此当它尝试连接到通道时会引发异常。

感谢您的任何帮助,您可以提供。

4

0 回答 0