G
GSUS24
Neues Mitglied
- 0
Hallo
ich versuche gerade über ssh eine Verbindung zu meinem Router herzustellen.
Über den Terminal Emulator funktioniert das problemlos.
Mittlerweile bin ich schon ne Woche dran und verzweifle so langsam.
Hier habe ich schonmal einen Beitrag gestartet, leider ohne Erfolg
https://www.android-hilfe.de/forum/...inal-intent-commands.400145.html#post-5543097
Vorhin bin ich auf diesen Interessanten Beitrag gestoßen
ERiDeM.net – Android tip #021 – SSH, execute remote commands with Android
Mithilfe zweier libs eine Verbindung aufgebaut werden kann und weitere Befehle übergeben werden können.
JSCH ist eine .jar
jzlib ein ordner
Die .jar habe ich in mein Projekt unter /libs kopiert und dem build Path hinzugefügt. Was ist mit jzlib-ordner, wird der überhaupt benötigt?
Nur mit der JSCH-lib hab ich versucht eine neue Klasse zu erstellen.
Im Netz hab ich dieses Bsp hier gefunden
Die Klasse rufe ich in der OnCreateView meines Fragments auf
Das ganze lässt sich ohne Fehler kompilieren, auch ohne die jzlib-ordner.
Nur hat es leider nicht den gewünschten Effekt.
Der rot markierte Abschnitt, zeigt mir einfach eine Textview, die mir als eine Debugghilfe dient. Lasse ich die View vor dem connect(), bekomm ich auch ein show auf dem Screen. Nach dem Verbindungsversuch wird auch keine View mehr reingemalt.
Für mich sieht es so aus das der Verbindungsversuch fehlschlägt und alles was danach kommt nicht mehr abgearbeitet wird.
Wenn jemand schon damit Erfahrungen gemacht hat, möge mir doch bitte helfen
ich versuche gerade über ssh eine Verbindung zu meinem Router herzustellen.
Über den Terminal Emulator funktioniert das problemlos.
Mittlerweile bin ich schon ne Woche dran und verzweifle so langsam.
Hier habe ich schonmal einen Beitrag gestartet, leider ohne Erfolg
https://www.android-hilfe.de/forum/...inal-intent-commands.400145.html#post-5543097
Vorhin bin ich auf diesen Interessanten Beitrag gestoßen
ERiDeM.net – Android tip #021 – SSH, execute remote commands with Android
Mithilfe zweier libs eine Verbindung aufgebaut werden kann und weitere Befehle übergeben werden können.
JSCH ist eine .jar
jzlib ein ordner
Die .jar habe ich in mein Projekt unter /libs kopiert und dem build Path hinzugefügt. Was ist mit jzlib-ordner, wird der überhaupt benötigt?
Nur mit der JSCH-lib hab ich versucht eine neue Klasse zu erstellen.
Im Netz hab ich dieses Bsp hier gefunden
Code:
public class SSH {
static View tvLINE;
private JSch shell;
private Session session;
private Channel channel;
private static OutputStream out;
private static InputStream in;
public void connect(String username, String password, String host, int port, final View v)
throws JSchException, IOException, InterruptedException {
shell = new JSch();
session = shell.getSession(username, host, port);
session.setPassword(password);
session.setConfig("StrictHostKeyChecking", "no");
session.connect();
[COLOR=Red]tvLINE = v.findViewById(R.id.showline);
((TextView)tvLINE).setText("show");[/COLOR]
channel=session.openChannel("shell");
channel.setInputStream(null);
channel.setOutputStream(null);
in=channel.getInputStream();
out =channel.getOutputStream();
((ChannelShell)channel).setPtyType("vt102");
channel.connect();
}
public String send(String command) throws IOException, InterruptedException {
byte[] tmp=new byte[1024];
out.write((command+";echo \"z4a3ce4f3317Z\"").getBytes());
out.write(("\n").getBytes());
out.flush();
String result = "";
while(true){
while(in.available()>0){
int i=in.read(tmp, 0, 1024);
if(i<0)
break;
result = result + (new String(tmp, 0, i));
}
if(result.indexOf("z4a3ce4f3317Z") != -1){
break;
}
try{Thread.sleep(100);}catch(Exception ee){}
}
return result;
}
public boolean isConnected() {
return (channel != null && channel.isConnected());
}
public void disconnect() {
if (isConnected()) {
channel.disconnect();
session.disconnect();
}
}
Die Klasse rufe ich in der OnCreateView meines Fragments auf
Code:
public void SSH(final View v){
try{
SSH client = new SSH();
client.connect("gsus","12345678","192.168.178.21", 22, v);
client.send("mkdir madebyandroid");
// client.send("uci commit wireless");
client.disconnect();
}catch(Exception e){
System.out.println(e);
}
}
Das ganze lässt sich ohne Fehler kompilieren, auch ohne die jzlib-ordner.
Nur hat es leider nicht den gewünschten Effekt.
Der rot markierte Abschnitt, zeigt mir einfach eine Textview, die mir als eine Debugghilfe dient. Lasse ich die View vor dem connect(), bekomm ich auch ein show auf dem Screen. Nach dem Verbindungsversuch wird auch keine View mehr reingemalt.
Für mich sieht es so aus das der Verbindungsversuch fehlschlägt und alles was danach kommt nicht mehr abgearbeitet wird.
Wenn jemand schon damit Erfahrungen gemacht hat, möge mir doch bitte helfen