最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java通過SSH連接路由器輸入命令并讀取響應的操作方法

 更新時間:2024年01月12日 09:01:37   作者:張曉風  
最近需要讀取和修改華為路由器的配置,使用Java語言開發(fā),通過SSH連接,輸入命令并讀取響應,接下來通過本文給大家介紹下Java通過SSH連接路由器,輸入命令并讀取響應,需要的朋友可以參考下

最近需要讀取和修改華為路由器的配置,使用Java語言開發(fā),通過SSH連接,輸入命令并讀取響應。

1.添加mwiede/jsch依賴

  • 如果使用Maven,可以在pom.xml文件中添加以下依賴:
<dependencies>
    <dependency>
        <groupId>com.github.mwiede</groupId>
        <artifactId>jsch</artifactId>
        <version>0.2.15</version>
    </dependency>
</dependencies>
  • 如果使用Gradle,則添加到build.gradle文件:
dependencies {
    implementation 'com.github.mwiede:jsch:0.2.15'
}

2.使用Jsch創(chuàng)建SSH連接,輸入命令并返回響應

/** 
*  獲取SSH命令響應
* @param userName        用戶名
* @param password        密碼
* @param host              ip地址
* @param port              端口
* @param commandList  命令列表
*/
public String getShellCmdRes(String userName, String password, String host, Integer port, List<String> commandList) throws JSchException, IOException {
        StringBuilder stringBuilder = new StringBuilder();
        JSch jsch = new JSch();
        Session session = jsch.getSession(userName, host, port());
        session.setPassword(password);
        session.setConfig("StrictHostKeyChecking", "no");
        session.connect();
        ChannelShell channel = (ChannelShell) session.openChannel("shell");
        // 獲取輸入輸出流
        OutputStream inputStreamForTheChannel = channel.getOutputStream();
        InputStream outputStreamForTheChannel = channel.getInputStream();
        // 連接通道
        channel.connect();
        PrintStream commander = new PrintStream(inputStreamForTheChannel, true);
        byte[] tmp = new byte[1024];
        while (true) {
            while (outputStreamForTheChannel.available() > 0) {
                int i = outputStreamForTheChannel.read(tmp, 0, 1024);
                if (i < 0) {
                    break;
                }
                String output = new String(tmp, 0, i);
                // 讀取響應
                stringBuilder.append(output);
                stringBuilder.append(System.lineSeparator());
                // 發(fā)送命令
                commandList.forEach(command -> {
                    commander.println(command);
                });
            }
            if (channel.isClosed()) {
                if (outputStreamForTheChannel.available() > 0) {
                    continue;
                }
                break;
            }
            try {
                Thread.sleep(10);
            } catch (Exception ee) {
            }
        }
        // 關閉通道和會話
        channel.disconnect();
        session.disconnect();
        return stringBuilder.toString();
    }

3.調用上文方法

3.1 單條命令

記得結束時加入退出語句,這里以路由器為例,用quit退出

List<String> commandList = new  ArrayList<>();
// 查看
commandList.add("display bfd session all");
// 退出會話
commandList.add("quit");
// 獲取響應
String response = getShellCmdRes("admin", "admin", "1.1.1.1", 22, List<String> commandList)

3.2 多條命令

如果是多條命令,每進入一個會話,就多一個退出語句

List<String> commandList = new ArrayList<>();
// 進入system-view
commandList.add("system-view");
// 進入Tunnel 0/0/5
commandList.add("interface Tunnel 0/0/5");
// 查看信息
commandList.add("display this");
// 退出Tunnel 0/0/5
commandList.add("quit");
// 退出system-view
commandList.add("quit");
// 退出會話
commandList.add("quit");
// 獲取響應
String response = getShellCmdRes("admin", "admin", "1.1.1.1", 22, List<String> commandList)

到此這篇關于Java通過SSH連接路由器,輸入命令并讀取響應的文章就介紹到這了,更多相關Java輸入命令并讀取響應內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • Java使用設計模式中的工廠方法模式實例解析

    Java使用設計模式中的工廠方法模式實例解析

    當系統(tǒng)準備為用戶提供某個類的子類的實例,又不想讓用戶代碼和該子類形成耦合時,就可以使用工廠方法模式來設計系統(tǒng).工廠方法模式的關鍵是在一個接口或抽象類中定義一個抽象方法,下面我們會具體介紹Java使用設計模式中的工廠方法模式實例解析.
    2016-05-05
  • SpringBoot/SpringCloud使用jasypt-spring-boot實現(xiàn)配置文件加密

    SpringBoot/SpringCloud使用jasypt-spring-boot實現(xiàn)配置文件加密

    在現(xiàn)代軟件開發(fā)和部署中,應用程序的配置文件常常包含敏感信息,本文將詳細介紹如何使用 jasypt-spring-boot 庫,在 Spring Boot 和 Spring Cloud 項目中實現(xiàn)配置文件內容的加密與解密,需要的朋友可以參考下
    2026-05-05
  • SpringBoot讀取resource目錄下文件失敗的原因及解決方案

    SpringBoot讀取resource目錄下文件失敗的原因及解決方案

    在idea中運行時,有些resource下文件讀取工具類能夠正常獲取讀取到文件,但是通過java–jar的方式去運行jar包,此時resource下文件讀取工具類讀取文件就失效了,本文就給大家介紹一下SpringBoot讀取resource目錄下文件失敗解決方案,需要的朋友可以參考下
    2023-08-08
  • 如何在Spring?Boot中使用MyBatis訪問數(shù)據(jù)庫

    如何在Spring?Boot中使用MyBatis訪問數(shù)據(jù)庫

    MyBatis可以通過簡單的XML或者注解來配置和映射原始類型,接口,和Java POJO為數(shù)據(jù)庫中記錄,使用MyBatis幫助我們解決各種問題,本文介紹如何在Spring?Boot中使用MyBatis訪問數(shù)據(jù)庫,感興趣的朋友一起看看吧
    2023-11-11
  • SpringBoot?整合Mybatis-Plus并輸出SQL日志示例詳解

    SpringBoot?整合Mybatis-Plus并輸出SQL日志示例詳解

    這篇文章主要介紹了SpringBoot整合Mybatis-Plus并輸出SQL日志,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-06-06
  • Spring?boot?easyexcel?實現(xiàn)復合數(shù)據(jù)導出、按模塊導出功能

    Spring?boot?easyexcel?實現(xiàn)復合數(shù)據(jù)導出、按模塊導出功能

    這篇文章主要介紹了Spring?boot?easyexcel?實現(xiàn)復合數(shù)據(jù)導出、按模塊導出,實現(xiàn)思路流程是準備一個導出基礎填充模板,默認填充key,本文給大家介紹的非常詳細,需要的朋友可以參考下
    2023-09-09
  • SpringBoot實現(xiàn)不同接口指定上傳文件大小的具體步驟

    SpringBoot實現(xiàn)不同接口指定上傳文件大小的具體步驟

    這篇文章主要介紹了在Spring Boot中通過自定義注解、AOP攔截和配置文件實現(xiàn)不同接口上傳文件大小限制的方法,強調需設置全局閾值遠大于接口自定義值,確保驗證邏輯正確執(zhí)行,需要的朋友可以參考下
    2025-08-08
  • Spring data jpa的使用與詳解(復雜動態(tài)查詢及分頁,排序)

    Spring data jpa的使用與詳解(復雜動態(tài)查詢及分頁,排序)

    這篇文章主要介紹了Spring data jpa的使用與詳解(復雜動態(tài)查詢及分頁,排序),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-11-11
  • JVM完全解讀之Metaspace解密源碼分析

    JVM完全解讀之Metaspace解密源碼分析

    通過這篇文章,你將可以了解到,為什么會有metaspace?metaspace的組成,metaspace的VM參數(shù),jstat里我們應該關注metaspace的哪些值,有需要的朋友可以借鑒參考下
    2022-01-01
  • java編程SpringSecurity入門原理及應用簡介

    java編程SpringSecurity入門原理及應用簡介

    Spring 是非常流行和成功的 Java 應用開發(fā)框架,Spring Security 正是 Spring 家族中的成員。Spring Security 基于 Spring 框架,提供了一套 Web 應用安全性的完整解決方案
    2021-09-09

最新評論

会昌县| 乡宁县| 区。| 珲春市| 新田县| 武义县| 晋宁县| 淮滨县| 苍山县| 西城区| 长顺县| 沙湾县| 融水| 伽师县| 诸城市| 南漳县| 龙江县| 江陵县| 内黄县| 和静县| 积石山| 樟树市| 德庆县| 托里县| 禄丰县| 思茅市| 济源市| 阳新县| 井陉县| 大邑县| 潢川县| 巴林右旗| 安吉县| 巴彦淖尔市| 商河县| 盱眙县| 芒康县| 舞阳县| 湖南省| 雅安市| 宣城市|