저는 인터넷을 통해 답변을 검색해 왔으며 같은 결과로 끝나지 만, 내가 원하는 것은 ssh를 통해 제 나무 딸기 파이에 명령 줄 지침을 보내는 것입니다. 잘못 알고있는 사용자 이름이나 암호를 입력하면 인증 실패가 발생하기 때문에 연결할 수 있다는 것을 알았습니다. 그래서 나는 연관되어 있지만, 나무 딸기 파이에는 아무 것도 일어나지 않는 것 같습니다. 현재 내 코드는 다음과 같습니다.Jsch ssh와 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();
}
}
누군가 나를 잘못 표시 할 수 있습니까 ??? 터미널에있는 나무 딸기 파이에 관한 명령을 볼 수 있을까요?
aaahhh! 그것은 분명해야했다! 감사! – IJustNeedHelp
현재 ssh 연결 응답을 인쇄하도록 내 코드를 어떻게 업데이트 할 수 있는지 보여 줄 수 있습니까? 나는 "누구"라고 입력했는데 장치 연결을 보지 못했습니다 (시뮬레이터를 사용하지 않고 전화로 코드를 실행 중입니다). 참고 : 동일한 전화 또는 랩톱으로 라즈베리 파이에 ssh 연결할 수 있으며 누가 응답했는지 확인할 수 있습니다. – IJustNeedHelp
'channelssh.getInputStream();'을 호출하여 스트림을 가져온 다음 스트림 판독기 (예 :'BufferedReader')를 사용하여 결과를 읽습니다. – ChrisStillwell