我正在尝试从我的应用程序通过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();
}
我可以解锁,然后锁定门,但之后会话才会关闭,所以当它尝试连接到频道时会引发异常。
感谢您提供的任何帮助。