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

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

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

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

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連接,輸入命令并返回響應(yīng)

/** 
*  獲取SSH命令響應(yīng)
* @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);
                // 讀取響應(yīng)
                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) {
            }
        }
        // 關(guān)閉通道和會話
        channel.disconnect();
        session.disconnect();
        return stringBuilder.toString();
    }

3.調(diào)用上文方法

3.1 單條命令

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

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

3.2 多條命令

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

List<String> commandList = new ArrayList<>();
// 進(jìn)入system-view
commandList.add("system-view");
// 進(jìn)入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");
// 獲取響應(yīng)
String response = getShellCmdRes("admin", "admin", "1.1.1.1", 22, List<String> commandList)

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

相關(guān)文章

  • Java使用設(shè)計(jì)模式中的工廠方法模式實(shí)例解析

    Java使用設(shè)計(jì)模式中的工廠方法模式實(shí)例解析

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

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

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

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

    在idea中運(yùn)行時,有些resource下文件讀取工具類能夠正常獲取讀取到文件,但是通過java–jar的方式去運(yùn)行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日志,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-06-06
  • Spring?boot?easyexcel?實(shí)現(xiàn)復(fù)合數(shù)據(jù)導(dǎo)出、按模塊導(dǎo)出功能

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

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

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

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

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

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

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

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

    java編程SpringSecurity入門原理及應(yīng)用簡介

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

最新評論

邓州市| 特克斯县| 阿城市| 鄂尔多斯市| 兖州市| 宜阳县| 荔波县| 克拉玛依市| 民县| 繁峙县| 京山县| 海淀区| 南通市| 武夷山市| 松滋市| 淳化县| 安图县| 高邮市| 大悟县| 淮阳县| 诸城市| 丹东市| 万全县| 西乡县| 时尚| 渝北区| 浠水县| 克什克腾旗| 泰来县| 阳泉市| 青川县| 尤溪县| 安塞县| 黄龙县| 龙泉市| 汉阴县| 合肥市| 兴文县| 凉山| 秭归县| 合阳县|