我正在尝试做一个简单的android应用程序,向运行RaspBMC的Rasberry pi发送两个命令(启动和停止xbmc)。我正在使用jsch库进行SSH连接。 这是我的代码:
public void onToggleClicked(View view) {
boolean on = ((ToggleButton) view).isChecked();
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);
dir_ip = prefs.getString("IP_DIR", "");
String[] params = new String[2];
params[0] = dir_ip;
if (!validarIP(dir_ip)){
alert.showAlertDialog(MainActivity.this, "Error",
"La direccion IP no ha sido seleccionada o es erronea. Vaya a Settings y elija una IP", false);
((ToggleButton) view).setChecked(!on);
}
else{
if (on) {
Log.d("AITOR", "START");
params[1] = "sudo initctl stop xbmc";
new sendCommand().execute(params);
} else {
params[1] = "sudo initctl start xbmc";
new sendCommand().execute(params);
}
}
dir_ip = "";
}
class sendCommand extends AsyncTask<String, Void, Void> {
@Override
protected Void doInBackground(String... params) {
JSch jsch = new JSch();
Session session;
try {
session = jsch.getSession("pi", params[0], 22);
session.setPassword("raspberry");
// Avoid asking for key confirmation
Properties prop = new Properties();
prop.put("StrictHostKeyChecking", "no");
session.setConfig(prop);
session.connect();
// SSH Channel
ChannelExec channelssh = (ChannelExec)
session.openChannel("exec");
ByteArrayOutputStream baos = new ByteArrayOutputStream();
channelssh.setOutputStream(baos);
// Execute command
channelssh.setCommand(params[1]);
channelssh.connect();
channelssh.disconnect();
}
catch (JSchException e) {
Log.d("AITOR", e.getMessage());
}
return null;
}
}
我没有收到任何异常或错误,只是命令没有发送到我的rPi。谢谢你的答案!
答案 0 :(得分:0)
尝试更改catch子句以获取所有Exception,以便查看是否在其他位置抛出异常。
catch (Exception e)...