无法使用jsch向Rpi发送命令

时间:2014-03-25 15:13:32

标签: java android raspberry-pi jsch

我正在尝试做一个简单的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。谢谢你的答案!

1 个答案:

答案 0 :(得分:0)

尝试更改catch子句以获取所有Exception,以便查看是否在其他位置抛出异常。

catch (Exception e)...