Java通过Jsch操控服务器

写一个自己的XShell

你想做一个不一样的web项目么?比如用Java连接云服务器,写一个自己的XShell

Java使用JSch连接服务器实现命令交互

一 引入maven

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

二、编写代码

(1)创建MyUserInfo

​ 创建MyUserInfo类,实现Jsch包下的 UserInfo接口(必须)UIKeyboardInteractive接口(可选)。将public boolean promptYesNo(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) {
      		//TOOD 这里
        //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)创建shell类连接服务器
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)启动
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);
    }

}

三、结果

参考:

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

}


## 三、结果

[外链图片转存中...(img-T8NeqzNP-1690376487606)]



# 参考:

[java使用JSch连接服务器实现命令交互-阿里云开发者社区 (aliyun.com)](https://developer.aliyun.com/article/1167855#:~:text=java使用JSch连接服务器实现命令交互 1 1、通过maven引入jsch,2 2、代码编写 3 3、测试结果)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值