欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

 更新時(shí)間: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)閉通道和會(huì)話
        channel.disconnect();
        session.disconnect();
        return stringBuilder.toString();
    }

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

3.1 單條命令

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

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

3.2 多條命令

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

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");
// 退出會(huì)話
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)文章

  • mybatis update更新字段的使用操作

    mybatis update更新字段的使用操作

    這篇文章主要介紹了mybatis update更新字段的使用操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2021-01-01
  • java簡單模仿win10計(jì)算器

    java簡單模仿win10計(jì)算器

    這篇文章主要為大家詳細(xì)介紹了java簡單模仿win10計(jì)算器de,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-02-02
  • Java中實(shí)現(xiàn)OCR識(shí)別讀取圖片中的文字

    Java中實(shí)現(xiàn)OCR識(shí)別讀取圖片中的文字

    圖片內(nèi)容一般無法編輯,如果想要讀取圖片中的文本,我們需要用到OCR工具,本文將介紹如何在Java中實(shí)現(xiàn)OCR識(shí)別讀取圖片中的文字,文中通過代碼示例介紹的非常詳細(xì),需要的朋友可以參考下
    2024-04-04
  • spring security認(rèn)證異常后返回中文提示的問題

    spring security認(rèn)證異常后返回中文提示的問題

    這篇文章主要介紹了spring security認(rèn)證異常后返回中文提示的問題,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-02-02
  • JavaWeb Session失效時(shí)間設(shè)置方法

    JavaWeb Session失效時(shí)間設(shè)置方法

    這篇文章主要介紹了JavaWeb Session失效時(shí)間設(shè)置方法,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下
    2016-12-12
  • 如何解決IDEA沒有新建servlet選項(xiàng)問題

    如何解決IDEA沒有新建servlet選項(xiàng)問題

    這篇文章主要介紹了如何解決IDEA沒有新建servlet選項(xiàng)問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2025-04-04
  • Spring?Boot整合持久層之JdbcTemplate多數(shù)據(jù)源

    Spring?Boot整合持久層之JdbcTemplate多數(shù)據(jù)源

    持久層是JavaEE中訪問數(shù)據(jù)庫的核心操作,SpringBoot中對(duì)常見的持久層框架都提供了自動(dòng)化配置,例如JdbcTemplate、JPA 等,MyBatis 的自動(dòng)化配置則是MyBatis官方提供的。接下來分別向讀者介紹Spring Boot整合這持久層技術(shù)中的整合JdbcTemplate
    2022-08-08
  • Java基礎(chǔ)鞏固系列包裝類代碼實(shí)例

    Java基礎(chǔ)鞏固系列包裝類代碼實(shí)例

    這篇文章主要介紹了Java包裝類,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-04-04
  • Java正確比較浮點(diǎn)數(shù)的方法

    Java正確比較浮點(diǎn)數(shù)的方法

    這篇文章主要介紹了Java正確比較浮點(diǎn)數(shù)的方法,幫助大家更好的利用Java比較浮點(diǎn)數(shù)數(shù)據(jù),感興趣的朋友可以了解下
    2020-11-11
  • 深入理解Java設(shè)計(jì)模式之代理模式

    深入理解Java設(shè)計(jì)模式之代理模式

    這篇文章主要介紹了Java設(shè)計(jì)模式之代理模式的的相關(guān)資料,文中示例代碼非常詳細(xì),供大家參考和學(xué)習(xí),感興趣的朋友可以了解下
    2021-11-11

最新評(píng)論