添加按钮到Android应用程序以启动ssh'ing到远程机器

时间:2017-08-07 09:23:52

标签: java android

我有一个工作的ssh应用程序界面,但我想知道如何实现两个按钮 - 一个通过ssh连接和一个按钮断开与ssh的连接。这是使用android工作室。我尝试的任何实现都导致代码中存在“未解决的”变量。 我目前在布局文件中实现了两个按钮 - 一个带有点击消息'go',然后点击消息'stop'。我认为它可能比onclicklistener更容易,但任何解决方案都是受欢迎的。 这是活动代码

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 mainmenu extends AppCompatActivity {

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_mainmenu);

        new AsyncTask<Integer, Void, Void>() {
            @Override
            protected Void doInBackground(Integer... params) {
                try {
                    executeRemoteCommand("username", "password", "IP", 22);
                } catch (Exception e) {
                    e.printStackTrace();
                }
                return null;
            }
        }.execute(1);
    }

        public static String executeRemoteCommand (String username, String password, String hostname,
        int port)
            throws Exception {


            JSch jsch = new JSch();
            Session session = jsch.getSession(username, hostname, port);
            session.setPassword(password);

            // Avoid asking for key confirmation
            Properties prop = new Properties();
            prop.put("StrictHostKeyChecking", "no");
            session.setConfig(prop);

            session.connect();

            // SSH Channel

            // Execute comman

            ChannelExec channelssh = (ChannelExec)
                    session.openChannel("exec");
            ByteArrayOutputStream baos = new ByteArrayOutputStream();
            channelssh.setOutputStream(baos);
            channelssh.setCommand(" 1");
            channelssh.connect();


            channelssh.disconnect();

            return baos.toString();

    }
}

每当我尝试将'session'作为一个静态变量时,它会抛出一个错误并说当我尝试这个按钮结构时它没有得到解决:

public void go (void){
channelssh.connect()
}

0 个答案:

没有答案