hackthedev / remotepifm

This App allows you to Broadcast your own Music to every radio in a specific range using a custom frequency. It requires a Raspberry Pi and PiFmRds Project found on Github.
GNU General Public License v3.0
8 stars 1 forks source link

Method "cmd()" in ControlActivity.java not returning command output #3

Open hackthedev opened 3 years ago

hackthedev commented 3 years ago

The following Code is not returning any command output. If anyone can help me here I'd be really happy.

    public String cmd(
            String command) throws Exception {

        try{
            String username = MainActivity._user;
            String password = MainActivity._pass;;
            String hostname = MainActivity._host;
            String port = MainActivity._port;

            JSch jsch = new JSch();
            Session session = jsch.getSession(username, hostname, Integer.parseInt(port));
            session.setPassword(password);

            // 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);

            channelssh.setCommand(command);

            channelssh.connect();

            while(true){
                if(channelssh.isClosed()){
                    break;
                }
            }

            channelssh.disconnect();

            return baos.toString();
        } catch (Exception e){
            Log.e("ControlActivity-Login:", e.getMessage());

            return "ERROR";
        }

    }

Although the same function in MainActivity.java does.

    public static String executeRemoteCommand(
            String username,
            String password,
            String hostname,
            int port,
            String command) throws Exception {

        try{
            hostname = hostname.replace(" ", "");

            JSch jsch = new JSch();
            Session session = jsch.getSession(username, hostname, 22);
            session.setPassword(password);

            // 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);

            channelssh.setCommand(command);

            channelssh.connect();

            while(true){
                if(channelssh.isClosed()){
                    break;
                }
            }

            channelssh.disconnect();

            return baos.toString();
        } catch (Exception e){
            Log.e("MainActivity-Login:", e.getMessage());

            return "ERROR";
        }

    }
DerSanyar commented 3 years ago

In der ersten Klasse steht: String port = MainActivity._port; Aber in der MainActivity Klasse ist es ein Integer. int port,

Versuch in der ersten Klasse das zuschreiben statt den String int port = MainActivity._port;

Und bei dem Passwort sind 2 Semikolon am Ende.

hackthedev commented 3 years ago

Danke ich werd mir das sobald ich von der Arbeit daheim bin mal ansehen und fixen. Weißt du zufällig auch wieso die Methode keinen Wert zurück gibt?

DerSanyar commented 3 years ago

Suche immer noch den Fehler aber finde einfach keinen. Oder du hast die Methode gar nicht aufgerufen. Ansonsten finde ich keinen Fehler im Code.

hackthedev commented 3 years ago

Aufgerufen wird sie meines Wissens eh sonst würden die nicht gehen aber dennoch erhalte ich keinen Rückgabewert was halt komisch ist aber ja.