Witam,
napisałem kod, który po ssh ma się łączyć z raspberry pi.
package com.example.filip.filip_app;
import android.os.AsyncTask;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;
import com.jcraft.jsch.Channel;
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 MainActivity extends AppCompatActivity {
public static String doCommand(String username, String password, String hostname, int port) throws Exception{
JSch jsch = new JSch();
Session session = jsch.getSession(username,hostname,port);
session.setPassword(password);
Properties prop = new Properties();
prop.put("StrictHostKeyChecking", "no");
session.setConfig(prop);
session.connect();
ChannelExec channelssh = (ChannelExec) session.openChannel("exec");
ByteArrayOutputStream boas = new ByteArrayOutputStream();
channelssh.setOutputStream(boas);
channelssh.setCommand("lsusb > /home/pi/test.txt");
channelssh.connect();
channelssh.disconnect();
return boas.toString();
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button btn = (Button) findViewById(R.id.btnSend);
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
new AsyncTask<Integer,Void,Void>(){
protected Void doInBackground(Integer...params) {
try {
doCommand("root", "mypass", "192.168.1.100", 22);
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
}.execute(1);
}});
}
}
Niestety nie wiem czemu aplikacja nic nie robi. W logach pi nie pojawia, się żadna informacja o próbie logowania. Telefon jest tej w samej sieci co pi, dodatkowo przy użyciu programu JuiceSSH wszystko działa jak należy. Czy, żeby wywołać połączenie trzeba coś jeszcze wykonać ?