Я искал ответы на все вопросы через Интернет, и я продолжаю получать те же результаты, но все, что я хочу сделать, - это отправить командную строку на мой малиновый pi через ssh. Простите меня, если я полностью пропустил что-то действительно очевидное, но я знаю, что могу подключиться, потому что, если я набираю неправильное имя пользователя или пароль, я получаю сбой авторизации. Поэтому я связан, но ничего не происходит на моем малиновом пи. Это следующий мой текущий код:Jsch ssh to Rasperry Pi ничего не делает
package com.name.app.prynsofpi;
import android.os.AsyncTask;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
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 {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
new AsyncTask<Integer, Void, Void>(){
@Override
protected Void doInBackground(Integer... params){
try {
executeRemoteCommand("pi", "green1", "10.1.1.47", 22);
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
}.execute(1);
}
public static String executeRemoteCommand(String usrname, String passwd, String hostname, int Port) throws Exception {
JSch jsch = new JSch();
Session session = jsch.getSession(usrname, hostname, 22);
session.setPassword(passwd);
Properties prop = new Properties();
prop.put("StrictHostKeyChecking", "no");
session.setConfig(prop);
session.connect();
ChannelExec channelssh = (ChannelExec) session.openChannel("exec");
ByteArrayOutputStream baos = new ByteArrayOutputStream();
channelssh.setOutputStream(baos);
channelssh.setCommand("ls");
channelssh.connect();
channelssh.disconnect();
return baos.toString();
}
}
Может кто-нибудь, пожалуйста, покажите мне, что не так ??? Должен ли я видеть команды на малине pi в терминале?
aaahhh! Это должно было быть очевидно! Благодаря! – IJustNeedHelp
Можете ли вы привести пример того, как я могу обновить свой код, чтобы распечатать текущие ответы на ssh? Я набираю «кто» и не вижу подключения к устройству (я не использую симулятор, я запускаю код на телефоне). ПРИМЕЧАНИЕ. Я могу использовать ssh в малиновом пие с помощью того же телефона или любого ноутбука и видеть связь в ответе. – IJustNeedHelp
Вызовите 'channelssh.getInputStream();', чтобы получить поток, затем используйте считыватель потоков (например, BufferedReader) для чтения результатов. – ChrisStillwell