gpt4 book ai didi

java - Jsch ssh 到 Raspberry Pi 不执行任何操作

转载 作者:行者123 更新时间:2023-12-01 20:57:26 27 4
gpt4 key购买 nike

我一直在互联网上寻找答案,但总是得到相同的结果,但我想做的就是通过 ssh 将命令行指令发送到我的树莓派。如果我完全错过了一些非常明显的东西,请原谅我,但我知道我能够连接,因为如果我输入不正确的用户名或密码,我会遇到身份验证失败。所以我已连接,但我的树莓派上似乎没有发生任何事情。以下是我当前的代码:

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 的终端上看到命令。当您建立 ssh 连接时,您正在创建一个新的终端进程,在 pi 屏幕上运行的终端不会显示输入或命令,这不是 ssh 的工作原理。您需要捕获输出并将其显示在您的 Android 设备上。

您可以在 pi 上运行 who 来查看通过 ssh 连接的帐户。

关于java - Jsch ssh 到 Raspberry Pi 不执行任何操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42077116/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com