Java は JSch を使用してサーバーに接続し、コマンドの対話を実現します。

JSch公式サイト

1. Maven を介して jsch をインポートする

        <dependency>
            <groupId>com.jcraft</groupId>
            <artifactId>jsch</artifactId>
            <version>0.1.55</version>
        </dependency>

2. コードの書き方

ここでは、Linux サーバーが jsch を介してリモート接続され、コマンドの対話がコンソール上で実現されます。

(1) MyUserInfoの作成

UserInfo クラスを作成し、UserInfo インターフェイス (必須) と UIKeyboardInteractive インターフェイス (オプション) を実装します。public boolean のプロンプト YesNo(String s) メソッドの戻り値を true に変更します。

public class MyUserInfo implements UserInfo, UIKeyboardInteractive {
    
    
    @Override
    public String getPassphrase() {
    
    
        return null;
    }

    @Override
    public String getPassword() {
    
    
        return null;
    }

    @Override
    public boolean promptPassword(String s) {
    
    
        return false;
    }

    @Override
    public boolean promptPassphrase(String s) {
    
    
        return false;
    }

    /*====这里====*/
    @Override
    public boolean promptYesNo(String s) {
    
    
        //return false;
        return true;
    }

    @Override
    public void showMessage(String s) {
    
    
    }


    @Override
    public String[] promptKeyboardInteractive(String s, String s1, String s2, String[] strings, boolean[] booleans) {
    
    
        return null;
    }
}

(2) サーバーに接続するためのシェルクラスを作成する

public class Shell {
    
    

    /**
     *
     * @param host 服务器ip地址
     * @param username 用户名
     * @param password 密码
     * @param port 端口
     */
    public void show(String host,String username,String password,int port){
    
    

        try {
    
    
            //1、创建JSch对象
            JSch jSch = new JSch();

            //2、设置连接服务器参数
            //用户名、主机ip、端口 获取session
            Session session = jSch.getSession(username, host, port);
            //设置密码
            session.setPassword(password);
            //设置用户信息(必须)
            session.setUserInfo(new MyUserInfo());
            //设置session连接超时时间
            session.connect(30000);
            
            //3、设置操作服务器的方式
            //采用shell方式(即命令交互)
            Channel channel = session.openChannel("shell");
            //命令从控制台输入
            channel.setInputStream(System.in);
            //显示信息从控制台输出
            channel.setOutputStream(System.out);
            //设置命令执行超时时间
            channel.connect(3*1000);
        } catch (JSchException e) {
    
    
            e.printStackTrace();
        }
        
    }

}

(3) スタート

開始する前に、Linux サーバーのポート 22 が開いていることを確認してください。

public class AppMain {
    
    

    public static void main(String[] args) throws InterruptedException {
    
    

        String username="root";//用户名
        String host="100.100.100.100";//ip地址
        int port=22;//端口  22端口,即为ssh应用端口,远程连接端口
        String password="123456789";//密码

        Shell shell = new Shell();
        shell.show(host,username,password,port);
    }

}

3. 試験結果

main 関数が開始されると、コンソールを Linux コマンドと対話するためのシェルとして使用できます。
ここに画像の説明を挿入

おすすめ

転載: blog.csdn.net/baiqi123456/article/details/128675496