• Wir präsentieren Dir heute ein Stellenangebot für einen Java Entwickler - m/w/d in Augsburg, München, Stuttgart oder Bamberg. Hier geht es zur Jobanzeige

Android studio, SSH an Raspberry

S

schnibli

Mitglied
Hallo,
Ich bin auf euer Forum gestoßen weil ich ein kleineres Problemchen habe :)
Daher auch gleich an meinem ersten tag meine Frage :)

Wunsch:
Ich würde gerne mit meinem Android App SSH befehler an meinen Raspberry pi senden.
Meine ersten versuche startete ich mit jsch.
Hier mal mein Code:
Code:
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        rootview = inflater.inflate(R.layout.menu3_layout, container, false);

        final Button btn_energy = (Button) rootview.findViewById(R.id.btn_energy);
        btn_energy.setOnClickListener(
                new Button.OnClickListener() {
                    public void onClick(View v) {
                        ClientAsyncTask clientAST = new ClientAsyncTask();
                    }
                }
        );

        return rootview;
    }

    ClientAsyncTask clientAST = new ClientAsyncTask();

    class ClientAsyncTask extends AsyncTask<String, Void, String> {
        @Override
        protected String doInBackground(String... params) {
            String result = null;
            try {
                JSch jsch = new JSch();
                Session session = null;

                session = jsch.getSession("root", "192.168.61.93", 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);

                // Execute command
                channelssh.setCommand("mpc stop");
                channelssh.connect();
                channelssh.disconnect();

            } catch (JSchException e) {

            }
            return result;
        }
    }
}

Nun es erscheinen Keine Fehler und es passiert auch nichts, daher denke ich, dass ich Grundlegend einen Fehler habe.

Zusätzlich währe es noch so das ich 2 Raspberry Pi's habe und je nach Button den Befehl an den einen oder an den anderen Raspberry pi gesendet werden soll.

Ich hoffe ich stoße hier auf Hilfreiche Personen :)

Freundliche Grüsse
 
dzim

dzim

Top Contributor
Ich hab leider noch nichts mit jsch gemacht, daher bin ich da etwas überfragt. Hast du das denn schon mal von einem regulären Java-Programm aus ausgeführt und geschaut, was da passiert?
Vielleicht auch auf dem Raspi mal mit tcpdump oder so tracen und schauen, ob die Verbindung überhaupt aufgemacht wird.

Grundsätzlich aber wäre es hilfreich, wenn du eventuelle JSchExceptions auch loggen würdest: Deine Anwendung (bzw. dein Task) dropped diese im Moment still und heimlich.
android.util.Log.<v|d|i|w|e>(tag, message[, throwable]);
Heisst: Es kann schon Exceptions geben, du bekommst sie nur nie mit...
 
Zuletzt bearbeitet:
S

schnibli

Mitglied
Hallo ich konnte es erfolgreich lösen :) ...
Code:
/**
 * Created by Roger on 13.03.2015.
 */
import com.jcraft.jsch.ChannelExec;
import com.jcraft.jsch.JSch;
import com.jcraft.jsch.Session;

import java.io.ByteArrayOutputStream;
import java.util.Properties;


public class SSH {
    public static String executeRemoteCommand() throws Exception {
        JSch jsch = new JSch();
        Session session = jsch.getSession("root", "192.168.61.93", 22);
        session.setPassword("schneider");


        // 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("mpc stop");
        channelssh.connect();
        channelssh.disconnect();

        return baos.toString();
    }
}
Code:
  btn_werk_srf3.setOnClickListener(
                new Button.OnClickListener() {
                    public void onClick(View v) {

                        new AsyncTask<Integer, Void, Void>(){
                            @Override
                            protected Void doInBackground(Integer... params) {
                                try {
                                    executeRemoteCommand("root","123451234","192.168.61.11", 22, "mpc play 4");
                                } catch (Exception e) {
                                    e.printStackTrace();
                                }
                                return null;
                            }
                        }.execute(1);
                    }
                }
        );

    public static String executeRemoteCommand(String username,String password,String hostname,int port, String message)
            throws Exception {
        JSch jsch = new JSch();
        Session session = jsch.getSession(username, hostname, 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);

        // Execute command
        channelssh.setCommand(message);
        channelssh.connect();
        channelssh.disconnect();

        return baos.toString();
    }
Danke!!
 
O

ollifred

Neues Mitglied
Hallo, ich würde gerne den Beitrag nochmal aufnehmen.
Ich habe den Code so probiert und es funktioniert auch wunderbar. Hab jetzt meine App aufs Handy gespielt, um damit meinen Raspberry als Webradio mit mpd zu steuern. Auch diese Funktion funktioniert, jedoch reagiert das ganze sehr träge. Bis ein Befehl vom Handy umgesetzt wird dauert es ca. 6-8 Sekunden. Gibts ne Möglichkeit das zu beschleunigen?
 
buggy84

buggy84

Bekanntes Mitglied
Es scheint, du baust immer die Verbindung neu auf. Das dauert natürlich.
Vielleicht wäre es einfacher, die ssh verbindung offen zu lassen, und erst ab einer bestimmten Zeit wieder zu schließen.

Vielleicht etwas umständlich gelöst im Moment.
 
F

f__lix

Mitglied
Hallo zusammen,
ich scheiter leider schon bei dem Einbinden des Packages.
Der Kompiler wirft mir ein Fehler bei dem Import.

Jetzt die Frage : Wie kann ich das Package richtig einbinden ? Wo muss ich es runterladen ?

Wäre euch für die Infos sehr danbar.

Liebe Grüße

Felix
 
F

f__lix

Mitglied
Hallo Vfl,

danke für die schnelle Antwort.
Bitte enschuldige meine ungenauen Angaben.

Ich habe ein Beispielprojekt in Android Studio erstellt. Anschließend wollte ich per Buttonklick eine Nachricht per SSH an ein LinuxDistro zu senden -> soviel zu dem Hintergrund.

Ich erstelle also ein Beispielprojekt und kopiere die Imports :

import com.jcraft.jsch.ChannelExec;
import com.jcraft.jsch.JSch;
import com.jcraft.jsch.Session;

darauffolgend wird jcraft rot unterstrichen.

Ich nehme an dass ich die Bibliothek erst einbinden muss.

Also habe ich das Paket heruntergeladen, jedoch enthält der Ordner diverse Dateien und ich weiss nicht wie ich die Bibliothek einbinden muss/kann und welche Datei benötigt wird.

Danke im Vorraus.
 
VfL_Freak

VfL_Freak

Top Contributor
Moin,
Ich nehme an dass ich die Bibliothek erst einbinden muss.
Also habe ich das Paket heruntergeladen, jedoch enthält der Ordner diverse Dateien und ich weiss nicht wie ich die Bibliothek einbinden muss/kann und welche Datei benötigt wird.
Also ich kenne die LIB natürlich auch nicht (habe den Link nur kurz für Dich gegooglet) :D
Aber ich denke doch mal, dass es dann irgendein lib-Verzeichnis geben wird, aus der du die 'passende' LIB in Deinen BuildPath einfügen kannst!
Gibt es denn keine readme-Datei oder ähnliches ??

Gruß Klaus
 
F

f__lix

Mitglied
Also müsste ich in dem gedownloadetem Ordner eine .lib Datei finden, die ich dann in Android studio importieren muss ? Wie binde ich eine solche Datei in Android Studio ein ?

Auf deren Website steht folgender Kommentar:
"JSch is in pure Java, but it depends on JavaTM Cryptography Extension (JCE). JSch has been known to work with:"

Ich brauche also diese JCE erweiterung um die Lib zu benutzen? Oder ist die Lib bereits in der Erweiterung enthalten ?
 
F

f__lix

Mitglied
Ich glaube ich habe mich etwas verrannt.
Habe jetzt von einer anderen Quelle eine .jar Datei herunter geladen.

Glaube ich muss diese nur noch in Android Studio importieren.

Bin ich in der Annahme richtig ?
 
buggy84

buggy84

Bekanntes Mitglied
Bin ich in der Annahme richtig, dass bei Dir sämtliche Grundlagen fehlen? Ich glaube, Du solltest Dich zuerst in deine IDE einarbeiten (kleines Stichwort: Gradle).
Da kannst Du hier fragen was Du willst, niemand kann Dir das Grundgerüst abnehmen. Und dann, irgendwann wenn Du fertig bist, kannst Du Sachen wie SSH machen.
 
M

maksimilian

Mitglied
Hallo schnibli,
ich hoffe, Du lebst noch :) Ich bin auf der Suche nach einer Methode, eine SSH-App für Android selber zu implementieren (Fernsteuerung einer Pi-Anwendung). Bei meiner Recherche stoße ich auf diesen schon etwas altenThread. Vielleicht meldest Du Dich oder jemand anderer, der mir beim Start behilflich sein möchte.
Ich wollte eigentlich die App mit Kotlin implementieren. Da finde ich aber bisher noch keine Beispiele, hätte aber auch kein Problem damit, in Java zu programmieren
 
kneitzel

kneitzel

Top Contributor
Also so einen alten Thread aufwärmen dürfte kaum etwas bringen.

Schau Dir mal die Library jsch an - das ist auch das, was der TE versucht hat zu benutzen. Die kannst Du auch aus Kotlin heraus nutzen.

Aber bei Problemen und so: Bitte eigenen Thread eröffnen und dann können wir Dir ggf. auch weiter helfen.
 
M

maksimilian

Mitglied
Danke für die schnelle Reaktion. Bin ja froh, dass sich jemand meldet. Ich werde einen neuen Thread aufmachen. Interessant ist die Aussage, dass jsch auch mit Kotlin benutzt werden kann.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
lolcore Android Studio -Download Documentation for Android SDK Android & Cross-Platform Mobile Apps 0
W Problem mit Android Studio Android & Cross-Platform Mobile Apps 0
OSchriever Auf onClick-Listener reagieren und Parameter übergeben (Android Studio) Android & Cross-Platform Mobile Apps 4
W Variable überschreiben (Android Studio) Android & Cross-Platform Mobile Apps 2
jmar83 Android Warum muss man bei Android Studio immer 2x auf "Run" klicken damit die App auf dem Gerät startet Android & Cross-Platform Mobile Apps 8
jmar83 Wie fügt man bei Android Studio .jar-Libraries zu einem Android-Java-Projekt hinzu? Android & Cross-Platform Mobile Apps 33
M Komponenten positionieren in Android Studio 3.6.3 Android & Cross-Platform Mobile Apps 1
M Android Studio - Property-Fenster einblenden Android & Cross-Platform Mobile Apps 1
M Android Studio - App auf dem Smartphone testen Android & Cross-Platform Mobile Apps 7
M Android Studio - Configuration fehlt Android & Cross-Platform Mobile Apps 20
M Unsupported class file major version 57 - Fehlermeldung bei Android Studio Android & Cross-Platform Mobile Apps 27
jmar83 Android Studio (SDK) ANDROID_SDK_ROOT-Variable? Android & Cross-Platform Mobile Apps 5
J Android Studio macht seltsame Sachen Android & Cross-Platform Mobile Apps 2
J Android 9.1 aber android Studio findet API22 Android & Cross-Platform Mobile Apps 0
Dimax Web-Seite in native app convertieren mit Android Studio Android & Cross-Platform Mobile Apps 8
A Android Studio: while-Schleife beginnt nicht Android & Cross-Platform Mobile Apps 5
lolcore android studio: fehler bei laden des emulators Android & Cross-Platform Mobile Apps 10
A Android-Studio: 2. Layout nach kurzer Zeit aufzeigen Android & Cross-Platform Mobile Apps 2
A jpg wird im Android Studio nicht akzeptiert Android & Cross-Platform Mobile Apps 3
J Android Studio - ArrayList - Selected Item ermitteln Android & Cross-Platform Mobile Apps 13
A Android Studio: ImageView verpixelt Android & Cross-Platform Mobile Apps 2
J intend Service im Android Studio Android & Cross-Platform Mobile Apps 4
T Fehler Android Studio: java.net.MalformedURLException: no protocol: http%3A%2F%2Fwww.mal ..... Android & Cross-Platform Mobile Apps 2
Arif Android Android Studio: Fehler beim Einbinden fremder Bibliothek? Android & Cross-Platform Mobile Apps 2
A Android Studio - App mit Nearby Android & Cross-Platform Mobile Apps 1
Jackii Android Android Studio Error im Testlauf ohne zu programmieren Android & Cross-Platform Mobile Apps 9
B Android Probleme mit Android Studio Android & Cross-Platform Mobile Apps 6
E Wie erhalte ich Zugriff auf das Microfon? (Android Studio) Android & Cross-Platform Mobile Apps 9
L Android Android Studio - Exportierte APK funktioniert nicht Android & Cross-Platform Mobile Apps 6
A Beginnen mit Serverkommunikatsion in Android Studio Android & Cross-Platform Mobile Apps 6
E Android Studio Android & Cross-Platform Mobile Apps 15
L Android Android Studio Setup killt Explorer Android & Cross-Platform Mobile Apps 3
J Variable in strings.xml (Android Studio) Android & Cross-Platform Mobile Apps 0
B Android Android Studio lässt PC abstürzen Android & Cross-Platform Mobile Apps 3
Light Lux Fehlermeldung unter Android Studio Android & Cross-Platform Mobile Apps 1
A Android Android Studio Emulator Problem Android & Cross-Platform Mobile Apps 1
S Android Studio Bluetooth App Problem Android & Cross-Platform Mobile Apps 6
Maresuke Android Android Studio & Bitbucket Android & Cross-Platform Mobile Apps 0
S Software-Tastatur des Android-Studio-Emulators öffnen? Android & Cross-Platform Mobile Apps 0
S Android Studio Emulator falsch eingestellt? Android & Cross-Platform Mobile Apps 1
N Blackscreen bei while-Schleife? (Android-Studio) Android & Cross-Platform Mobile Apps 2
S Android Studio MySql Daten in Listview mit sub Item Android & Cross-Platform Mobile Apps 11
H Android Android Studio mit NDK ünterstützung, wann? Android & Cross-Platform Mobile Apps 1
T Android MSSQL Verbindung herstellen - Android Studio Android & Cross-Platform Mobile Apps 2
J Is Android Development Head First Outdated? Android & Cross-Platform Mobile Apps 3
J Android Android Datenbankverbindung zum Raspberry Pi Android & Cross-Platform Mobile Apps 1
S Sinnvollste weg eine SQLite DB mit Android auslesen Android & Cross-Platform Mobile Apps 7
W App Abo Android Android & Cross-Platform Mobile Apps 10
OSchriever Android Android MediaPlayer bei Anruf stoppen/pausieren Android & Cross-Platform Mobile Apps 2
W removeNetwork Android App mit Spendenaktion fürs Tierheim! Android & Cross-Platform Mobile Apps 1
T Android R.string.test+i Problem Android & Cross-Platform Mobile Apps 2
P undefinierbarer Fehler Android Android & Cross-Platform Mobile Apps 8
T Android ArrayList sortieren mit 2 Werten ohne thencomparing , Wie? Android & Cross-Platform Mobile Apps 10
jmar83 Android Selbst entwickelter SMTP-Client läuft auf PC, nicht aber auf Android Android & Cross-Platform Mobile Apps 9
jmar83 Android Wo das 'android.useAndroidX' property hinzufügen? Android & Cross-Platform Mobile Apps 8
jmar83 Android In einem Android-“Spinner”-Element GLEICHZEITIG Bild (links) UND Text (rechts) anzeigen Android & Cross-Platform Mobile Apps 0
P Login und Registrierung Android Anzeige Android & Cross-Platform Mobile Apps 7
S Von JavaFx zu Android Android & Cross-Platform Mobile Apps 12
K Android to Pi | Websocket Problem Android & Cross-Platform Mobile Apps 3
M Barrierefreie Appentwicklung für Android - Suche Codebeispiele Android & Cross-Platform Mobile Apps 8
M Wo kann ich das Android SDK herunterladen / wie kann ich es installieren Android & Cross-Platform Mobile Apps 3
O Web API in Android (JAVA) einbinden Android & Cross-Platform Mobile Apps 3
J Android App - Browser öffnen und Text eingeben/Button click auslösen Android & Cross-Platform Mobile Apps 10
T Android SDK-Manager startet nicht in Eclipse Android & Cross-Platform Mobile Apps 5
T Bringen mir die Java-Basics irgendetwas für die Android-Programmierung Android & Cross-Platform Mobile Apps 4
J Was soll das bedeuten ? does not require android.permission.BIND_JOB_SERVICE permission Android & Cross-Platform Mobile Apps 7
L Android Android Development eventuell mit Flutter Android & Cross-Platform Mobile Apps 1
S Android Layout - welchen Typ? Android & Cross-Platform Mobile Apps 3
L Android Android Contacts DB auslesen Android & Cross-Platform Mobile Apps 1
L Android content URI Datei einlesen Android & Cross-Platform Mobile Apps 9
N Android Game Background Service Android & Cross-Platform Mobile Apps 11
Excess Android Service läuft nicht in Sandby weiter Android & Cross-Platform Mobile Apps 2
B Android Projekt für Android und IOS erstellen? Android & Cross-Platform Mobile Apps 5
J App funktioniert auf Android 5, auf 6 nicht Android & Cross-Platform Mobile Apps 2
J Android Snake Android & Cross-Platform Mobile Apps 15
J Android TaschenRechner Android & Cross-Platform Mobile Apps 22
I Das Problem mit der Tastatur... android:windowSoftInputMode="adjustPan" Android & Cross-Platform Mobile Apps 1
C Android Programmierung speziell oder einfach Java Buch kaufen? Android & Cross-Platform Mobile Apps 3
B Android Kein Zugriff auf Telefonspeicher (Android 6) Android & Cross-Platform Mobile Apps 1
T Android Equalizer für Android Android & Cross-Platform Mobile Apps 3
L Android Methode funktioniert nicht unter Android Android & Cross-Platform Mobile Apps 3
K Android Videos rendern Android & Cross-Platform Mobile Apps 1
B Android App Fehler Android & Cross-Platform Mobile Apps 21
J android Spinner funktioniert nicht Android & Cross-Platform Mobile Apps 14
G Android Push Notification Android & Cross-Platform Mobile Apps 2
D Android Android Apps direkt vom Handy aus programmieren? Android & Cross-Platform Mobile Apps 2
L Android Android Kalendar Tag Ansicht Android & Cross-Platform Mobile Apps 1
J Android Java Packet in Android Java ide hinzufügen. Android & Cross-Platform Mobile Apps 3
L Android Texterkennung für Android? Android & Cross-Platform Mobile Apps 1
L Android Chart API für Android Android & Cross-Platform Mobile Apps 0
L Android SQLite mit HSQLDB über Android synchronisieren Android & Cross-Platform Mobile Apps 13
B Android Text von Android zu PC senden? Android & Cross-Platform Mobile Apps 5
ATZENPOWER Android Probleme mit mobilen Daten via lte Android & Cross-Platform Mobile Apps 10
J standardmässige Persistenz bei Android Android & Cross-Platform Mobile Apps 2
Dechasa Android Android - Canvas NullpointException Android & Cross-Platform Mobile Apps 2
L Android Android exportierte XML einlesen Android & Cross-Platform Mobile Apps 2
T Android Programm zu Android-App Android & Cross-Platform Mobile Apps 4
Florum Android FTP Upload über Android Android & Cross-Platform Mobile Apps 15
P Android Android-App Crash - Unable to start activity ComponentInfo Android & Cross-Platform Mobile Apps 2
S Android Unfortunately, the process com.android.phone has stopped Android & Cross-Platform Mobile Apps 0

Ähnliche Java Themen

Anzeige

Neue Themen


Oben