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

news2024/12/26 14:48:46

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

  • 1、通过maven引入jsch
  • 2、代码编写
    • (1)创建MyUserInfo
    • (2)创建Shell类连接服务器
    • (3)启动
  • 3、测试结果

JSch官网

1、通过maven引入jsch

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

2、代码编写

这里通过jsch远程连接linux服务器,并在控制台实现命令的交互。

(1)创建MyUserInfo

创建UserInfo类,实现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) {
        //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)启动

启动前确保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函数启动后,就可以将控制台当成shell进行linux命令交互。
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/167654.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

万字长文--详解Git(快速入门)

Git基础与扩展Git1、Git概念1.1 关于版本控制1.2 Git基础概念2、Git基础操作2.1 安装并配置Git2.2 Git的基本操作3、Github操作3.1 关于开源3.2 注册账号3.3 远程仓库的使用4、Git分支操作4.1 本地分支操作4.2 远程分支操作Git 1、Git概念 1.1 关于版本控制 文件的版本管理的…

7 种常用的数据挖掘技术分享

有人说&#xff1a;一个人从1岁活到80岁很平凡&#xff0c;但如果从80岁倒着活&#xff0c;那么一半以上的人都可能不凡。 生活没有捷径&#xff0c;我们踩过的坑都成为了生活的经验&#xff0c;这些经验越早知道&#xff0c;你要走的弯路就会越少。 摘要: 随着信息领域的进步…

详解DFS(深度优先搜索)算法+模板+指数+排列+组合型枚举+带分数四道例题

目录 前言&#xff1a; 1.背景 2.图解分析 3.算法思想 4.dfs四大例题 4.1.递归实现指数型枚举 题解&#xff1a; 4.2.递归实现排列型枚举 题解&#xff1a; 字典序: 4.3.递归实现组合型枚举 题解: 4.4.带分数 题解&#xff1a; 5.最后&#xff1a; 前言&#xff1a;…

来了解一下ASN.1?

想要了解证书&#xff0c;必须先了解ASN.1和编码规则。这篇文章简单介绍ASN.1&#xff0c;不过分探讨细节&#xff0c;大家如果有兴趣可以继续深入研究。 一、ASN.1 ASN.1是Abstract Syntax Notation One&#xff08;抽象文法描述语言&#xff09;的缩写。计算机系统之间交换…

Android Studio 阅读 frameworks/base 下的代码

从网上搜的方案都是生成 android.ipr&#xff0c;但是这个需要整编&#xff0c;整编一次比较费时费劲&#xff0c;所以想了个巧招 首先用 Android Studio 打开 frameworks/base&#xff0c;其文件夹目录大概形如下&#xff1a; ├── Android.bp├── Android.mk├── api …

入门深度学习——基础知识总结(python代码实现)

入门深度学习——基础知识总结&#xff08;python代码实现&#xff09; 目前&#xff0c;AI基本上可以说是烂大街了。几乎什么都可以说使用了AI技术&#xff0c;听起来很拉风&#xff0c;很nb的样子。而其中目前最为火热的非深度学习&#xff08;Deep Learning&#xff09;莫属…

VisionPro (R) QuickBuild 工具使用问题解决 自用

右击我的电脑选择属性。搜索“安全中心” 点击病毒和威胁保护 在病毒和威胁保护中选择威胁信息&#xff08;当前威胁-保护历史记录&#xff09; 受影响的项目 file: C:\WINDOWS\sysWOW64\cognex.dll 相机和光源不能同时触发&#xff0c;光源要先于相机触发并且持续相机采集…

leetCode周赛-328

相关题解题目一&#xff1a;6291. 数组元素和与数字和的绝对差题目二&#xff1a;6292. 子矩阵元素加 1题目三&#xff1a;6293. 统计好子数组的数目题目四&#xff1a;2538. 最大价值和与最小价值和的差值题目一&#xff1a;6291. 数组元素和与数字和的绝对差 题目链接&#…

Web Security 之 Insecure deserialization

Insecure deserialization 在本节中&#xff0c;我们将介绍什么是不安全的反序列化&#xff0c;并描述它是如何使网站遭受高危害性攻击的。我们将重点介绍典型的场景&#xff0c;并演示一些 PHP、Ruby 和 Java 反序列化的具体示例。最后也会介绍一些避免不安全的反序列化漏洞的…

14正交向量与子空间

正交向量与子空间 本章研究的重点还是之前提到过的子空间&#xff0c;但是本章我们主要从正交的角度来探讨这些子空间具有的性质&#xff0c;主要内容见下图。 注意&#xff0c;上图指出了我们之前没有关注到的子空间的一些性质&#xff1a;对于一个矩阵&#xff0c;其零空间…

微信推送消息给女友提醒每天天气情况,本文讲解流程,附带代码,可快速上手。

实现的效果图 此模板为自己添加的&#xff0c;各位看客可以自行添加&#xff0c;如何添加接着往下看。备注在数据库自定义设置。如果你非专业人士&#xff0c;可以联系作者给你专属设置。如果需要代为设置跳转到文章结束位置。 完整的代码 代码下载地址 微信公众号设置 申…

《Linux Shell脚本攻略》学习笔记-第八章

8.1 简介 TCP/IP网络的运作过程就是在节点之间传递分组。每一个分组中都包含了目标的IP地址以及处理分组中数据的应用程序端口号。 当节点接收到分组时&#xff0c;它会查看自己是否就是改分组的目的地。如果是&#xff0c;节点会再检查端口号并调用相应的应用程序来处理分组数…

Cookie 会话身份验证是如何工作的?

在 Web 应用程序中&#xff0c;Cookie-Session 是一种标准的身份验证方法。饼干&#xff0c;也被称为“sweet cookies”。类型为“小文本文件”&#xff0c;是指一些网站为了识别用户身份而存储在客户端的数据。Session的主要功能是通过服务器记录用户的状态。 在典型的在线购物…

类与类之间关系的表示方式

1.关联关系 关联关系是对象之间的一种引用关系&#xff0c;用于表示一类对象与另一类对象之间的联系&#xff0c;如老师和学生&#xff0c;师傅和徒弟&#xff0c;丈夫和妻子等。关联关系是类与类之间最常用的一种关系&#xff0c;分为一般关联关系&#xff0c;聚合关系和组合…

郭天祥十天入门单片机学习笔记

电子元件 排阻 有两种&#xff1a; nn1 二极管 几个概念 限流电阻&#xff1a;与二极管串联&#xff0c;防止电流过大烧毁二极管导通压降&#xff1a;二极管亮起的最小电压 贴片式绿色为阴极&#xff0c;插入式短脚为阴极 数码管 共阴极&#xff1a;对应段选信号置1亮…

测试开发 | 这些常用测试平台,你们公司在用的是哪些呢?

测试管理平台是贯穿测试整个生命周期的工具集合&#xff0c;它主要解决的是测试过程中团队协作的问题。在整个测试过程中&#xff0c;需要对测试用例、Bug、代码、持续集成等等进行管理。下面分别从这四个方面介绍现在比较流行的管理平台。 图片108091 50.2 KB 测试用例管理平台…

Doris 使用记录(随机更新(ง •_•)ง)

文章目录知识点常见数据分布方式使用表动态分区Hash分桶知识点 常见数据分布方式 分布式数据库中常见的数据分布方式。 轮询&#xff1a;Round-Robin&#xff0c;假设分桶数为3&#xff0c;数据按顺序依次写入桶1、桶2、桶3&#xff0c;然后继续循环。 区间&#xff1a;Ran…

【Lp-CVT and Applications】

Lp-CVT and Applications 论文笔记 本文是论文 Lp Centroidal Voronoi Tessellation and its Applications 的学习笔记。有不足之处&#xff0c;请指出&#xff01;非常感谢&#xff01; 1 主要工作 解决问题&#xff1a;推广CVT以适用各向异性和六面体网格划分。推广 CVT &am…

如何模拟实现一个“缓存”?

目录 前言 一、LRU Cache是什么 二、模拟实现 2.1、通过继承 LinkedHashMap 模拟实现 2.2、自主模拟实现LRU Cache 2.2.1、LRU Cache的定义 2.2.2、存放结点 2.2.3、访问结点 2.2.4、LRU Cache 完整模拟代码 小结 前言 这次主要实现一个类似缓存的一种数据结构&#xf…

day49 业务逻辑水平垂直越权访问控制脆弱验证

前言&#xff1a; #知识点&#xff1a; 1、水平越权-同级用户权限共享 2、垂直越权-低高用户权限共享 3、访问控制-验证丢失&取消验证 4、脆弱验证-Cookie&Token&Jwt等 #前置知识&#xff1a; 1、逻辑越权原理- -水平越权&#xff1a;用户信息获取时未对用户…