国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Java利用JSCH庫遠(yuǎn)程連接Linux服務(wù)器以及操作多條Shell命令

這篇具有很好參考價(jià)值的文章主要介紹了Java利用JSCH庫遠(yuǎn)程連接Linux服務(wù)器以及操作多條Shell命令。希望對大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

================前情提要================

為了實(shí)現(xiàn)DHCP服務(wù)器的IP存儲、回收和查詢機(jī)制,我們需要將服務(wù)器中LXD容器的網(wǎng)卡IP查詢出來,并且存儲到服務(wù)器中的Mysql中。所以,下面介紹如何通過Java遠(yuǎn)程連接Linux服務(wù)器以及操作多條Shell命令。

一、JAVA連接至Linux服務(wù)器


創(chuàng)建Maven項(xiàng)目,導(dǎo)入依賴jsch

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

實(shí)現(xiàn)遠(yuǎn)程連接,往后我們只需要調(diào)用如下兩個(gè)方法即獲取連接和關(guān)閉連接。連接的原理即:創(chuàng)建session對話,使用ip,port,userName,password進(jìn)行校驗(yàn),函數(shù)返回session對話

//jsch創(chuàng)建連接
public Session getJSchSession(String ip , int port, String userName, String password){
    JSch jSch = new JSch();
    Session session = null;
    try {
        //創(chuàng)建連接
        session = jSch.getSession(userName,ip,port);
        session.setPassword(password);
        //是否使用密鑰登錄,一般默認(rèn)為no
        session.setConfig("StrictHostKeyChecking", "no");
        //啟用連接
        session.connect();
        System.out.println("==============服務(wù)器連接成功==============");
    }catch (Exception e){
        e.printStackTrace();
        System.out.println("==============服務(wù)器連接失敗==============");
    }
    return session;
}

//jsch關(guān)閉連接
public void closeJSchSession(Session session){
    if (session != null) {
        try {
            session.disconnect();
            System.out.println("===========服務(wù)器連接關(guān)閉成功===========");
        }catch (Exception e){
            e.printStackTrace();
            System.out.println("===========服務(wù)器連接關(guān)閉失敗===========");
        }
    }
}

二、JAVA操作多條Shell命令


網(wǎng)上找了很多資料,發(fā)現(xiàn)大家都是只執(zhí)行一條命令,這在實(shí)際使用中幾乎不可能,我們一般都需要傳入Shell命令集合進(jìn)行操作,并且如果有返回值要進(jìn)行接受。根據(jù)網(wǎng)上的資料,我進(jìn)行了自己的代碼編寫。

操作原理

  1. 使用上述連接中實(shí)現(xiàn)的session對話創(chuàng)建Channel執(zhí)行通道
  2. 命令集合參數(shù)傳遞給通道,連接通道,通道執(zhí)行命令,使用IO流讀命令結(jié)果
  3. 循環(huán)讀取結(jié)果并且將返回值拼接為字符串,若沒有返回值則標(biāo)注
  4. 將拼接好的字符串保存到集合,并且返回
//用來執(zhí)行命令
//Session表示傳遞連接對話,commands表示傳遞命令集合
public List<String> getCmdResult(Session session , List<String> commands){
    //用來存放命令的返回值
    List<String> cmdResult = new ArrayList<>();
    for (String command : commands) {
        Channel channel = null;
        try {
            //創(chuàng)建執(zhí)行通道
            channel = session.openChannel("exec");
            //設(shè)置命令
            ((ChannelExec) channel).setCommand(command);
            //連接通道
            channel.connect();
            //讀取通道的輸出
            InputStream in = channel.getInputStream();
            BufferedReader reader = new BufferedReader(new InputStreamReader(in));
            //存放命令的執(zhí)行結(jié)果,如果結(jié)果有很多行,則每次line的值不同
            String line;
            //lines用來拼接line結(jié)果
            StringBuffer lines = new StringBuffer();
            while ((line = reader.readLine()) != null) {
                //去除頭尾的空格
                line.trim();
                lines = lines.append(line);
            }
            //如果命令執(zhí)行沒有返回值,則直接輸出沒有返回值
            if (String.valueOf(lines).equals("")){
                cmdResult.add("命令["+command+"]執(zhí)行成功,但沒有返回值");
            }else {
                //否則將每行返回直接存入到list中
                cmdResult.add(String.valueOf(lines));
            }
            reader.close();
            channel.disconnect();
        } catch (JSchException e) {
            throw new RuntimeException(e);
        } catch (IOException e) {
            throw new RuntimeException(e);
        }
    }
    return cmdResult;
}

三、使用


簡單的介紹一下調(diào)用過程【這里特別要注意:cd命令是不生效的。所謂不生效就是你不能先切換到某個(gè)目錄,然后直接執(zhí)行創(chuàng)建文件夾,創(chuàng)建文件夾的路徑依然要寫絕對路徑】

public static void main(String[] args) {
    String ip = "服務(wù)器ip地址";
     int port = 22;
     String userName = "服務(wù)器賬號";
     String password = "服務(wù)器密碼";
     List<String> cmds = new ArrayList<>();
     cmds.add("ls -l");
     cmds.add("mkdir MyDir");
     GetLinuxConnection GLC = new GetLinuxConnection();
     Session session = GLC.getJSchSession(ip,port,userName,password);
     ExecLinuxCommands ELC = new ExecLinuxCommands();
     List<String> result = ELC.getCmdResult(session, cmds);
     result.forEach((x)-> System.out.println(x));
     GLC.closeJSchSession(session);
}

執(zhí)行結(jié)果如下
java程序連接linux服務(wù)器,Java,java,服務(wù)器,linux文章來源地址http://www.zghlxwxcb.cn/news/detail-643767.html

到了這里,關(guān)于Java利用JSCH庫遠(yuǎn)程連接Linux服務(wù)器以及操作多條Shell命令的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 【Linux】云服務(wù)器的遠(yuǎn)程連接

    【Linux】云服務(wù)器的遠(yuǎn)程連接

    需要云服務(wù)器等云產(chǎn)品來學(xué)習(xí)Linux的同學(xué)可以移步/--騰訊云--/官網(wǎng),輕量型云服務(wù)器低至112元/年,新用戶首次下單享超低折扣。 ? 目錄 一、云服務(wù)器的選用與購買 1、選用云服務(wù)器而不是虛擬機(jī)的理由 2、如何挑選云服務(wù)器 3、云服務(wù)器的配置 二、使用Xshell本地連接云服務(wù)器

    2024年02月02日
    瀏覽(21)
  • pycharm遠(yuǎn)程連接Linux服務(wù)器

    pycharm遠(yuǎn)程連接Linux服務(wù)器

    有時(shí)候,為了方便代碼管理,以及更加方便的使用服務(wù)器資源,選擇將編輯器與服務(wù)器遠(yuǎn)程連接是個(gè)不錯(cuò)的方法。 遠(yuǎn)程連接編輯器和服務(wù)器的使用場景非常廣泛。以下是一些常見的使用場景: 軟件開發(fā)團(tuán)隊(duì):團(tuán)隊(duì)成員可以通過遠(yuǎn)程連接編輯器和服務(wù)器進(jìn)行協(xié)作和代碼編寫,

    2024年02月08日
    瀏覽(26)
  • vscode遠(yuǎn)程連接linux服務(wù)器

    vscode遠(yuǎn)程連接linux服務(wù)器

    Linux服務(wù)器(或虛擬機(jī))條件: 開啟ssh服務(wù) 客戶端: vscode? ?1.服務(wù)端 ?服務(wù)端需要開啟ssh服務(wù)vscode才能連接,首先檢驗(yàn)linux是否開啟了ssh服務(wù) 運(yùn)行命令,如果可以看到ssh正在運(yùn)行,那么可以直接使用vscode進(jìn)行連接,跳轉(zhuǎn)到下一步驟。 如果米有開啟,那我們嘗試開啟: ?開啟

    2024年02月07日
    瀏覽(25)
  • VSCode 連接 Linux 遠(yuǎn)程服務(wù)器

    VSCode 連接 Linux 遠(yuǎn)程服務(wù)器

    我們在跑機(jī)器學(xué)習(xí)或深度學(xué)習(xí)模型的時(shí)候通常會使用 GPU,但大多數(shù)人自己本地電腦的 GPU 不是太好甚至沒有 GPU。所以我們通常會選擇實(shí)驗(yàn)室服務(wù)器或者云服務(wù)器去跑模型,一般我們會先在本地電腦寫完代碼,然后使用遠(yuǎn)程連接工具,如 MobaXterm 將代碼上傳至 Linux 服務(wù)器。 但

    2024年02月16日
    瀏覽(29)
  • vscode連接遠(yuǎn)程Linux服務(wù)器

    vscode連接遠(yuǎn)程Linux服務(wù)器

    記錄一下vscode連接遠(yuǎn)程Linux服務(wù)器及免密登陸的基本操作,操作環(huán)境: 本地windows安裝vscode 遠(yuǎn)程服務(wù)器存放代碼和安裝vscode-server vscode通過commitid和vscode-server綁定,vscode編輯通過ssh調(diào)試遠(yuǎn)程服務(wù)器代碼 vscode和vscode-server在github項(xiàng)目如下: 1.1 下載vscode vscode官網(wǎng)下載 1.2 下載vsco

    2024年02月14日
    瀏覽(19)
  • linux-三種遠(yuǎn)程連接服務(wù)器方式

    linux-三種遠(yuǎn)程連接服務(wù)器方式

    連接方式 3種 telnet 遠(yuǎn)程登陸 ssh遠(yuǎn)程連接 VNC遠(yuǎn)程連接 測試環(huán)境 linux版本:CentOS7 目的:嘗試在windows系統(tǒng)主機(jī)上,用Telnet遠(yuǎn)程登錄到windows服務(wù)器(server) 提示:windows客戶端:telnet服務(wù)需要手動啟動 Windows客戶端:telnet命令的使用 ( 打開設(shè)置-搜索控制面板-程序-啟用或關(guān)閉windo

    2024年02月15日
    瀏覽(24)
  • 如何用vscode遠(yuǎn)程連接Linux服務(wù)器

    如何用vscode遠(yuǎn)程連接Linux服務(wù)器

    文章目錄 一、下載所需插件 二、遠(yuǎn)程連接 三、更改遠(yuǎn)程服務(wù)器名稱 打開商店 下載Remote - SSH 下載Remote - SSH擴(kuò)展包 點(diǎn)擊遠(yuǎn)程資源管理器 點(diǎn)擊SSH旁邊的加號? 輸入: ssh 用戶名 @ 服務(wù)器地址 介紹 第一個(gè)是保存到當(dāng)前用戶 第二個(gè)是保存到所有用戶 ? 右鍵點(diǎn)擊剛才創(chuàng)建的遠(yuǎn)程連

    2024年02月08日
    瀏覽(16)
  • 「遠(yuǎn)程開發(fā)」VSCode使用SSH遠(yuǎn)程linux服務(wù)器 - 公網(wǎng)遠(yuǎn)程連接

    「遠(yuǎn)程開發(fā)」VSCode使用SSH遠(yuǎn)程linux服務(wù)器 - 公網(wǎng)遠(yuǎn)程連接

    轉(zhuǎn)發(fā)自cpolar內(nèi)網(wǎng)穿透的文章:【Vscode遠(yuǎn)程開發(fā)】使用SSH遠(yuǎn)程連接服務(wù)器 「內(nèi)網(wǎng)穿透」 遠(yuǎn)程連接服務(wù)器工具有很多,比如XShell、putty等,可以通過ssh來遠(yuǎn)程連接服務(wù)器,但這用于寫代碼并不方便,可能需要現(xiàn)在本地寫好代碼后再將源代碼傳送到服務(wù)器運(yùn)行、服務(wù)器上的圖片也無

    2024年02月06日
    瀏覽(31)
  • Ubuntu安裝MySQL服務(wù)器詳細(xì)步驟(包括設(shè)置外網(wǎng)利用Navicat等工具遠(yuǎn)程連接MySQL服務(wù)器)!——一看就會,跟著做就對!

    Ubuntu安裝MySQL服務(wù)器詳細(xì)步驟(包括設(shè)置外網(wǎng)利用Navicat等工具遠(yuǎn)程連接MySQL服務(wù)器)!——一看就會,跟著做就對!

    在開始安裝前,先更新一下系統(tǒng)。命令如下: sudo apt update sudo apt upgrade 使用APT方式安裝MySQL8時(shí),通常會安裝MySQL的最新版本,且能夠自動配置服務(wù)和環(huán)境變量。 sudo apt install mysql-server -y 安裝完成后,MySQL會自動啟動,可以使用以下命令測試MySQL安裝情況 sudo service mysql status 或

    2024年02月05日
    瀏覽(24)
  • VSCode使用Remote SSH遠(yuǎn)程連接Linux服務(wù)器【遠(yuǎn)程開發(fā)】

    VSCode使用Remote SSH遠(yuǎn)程連接Linux服務(wù)器【遠(yuǎn)程開發(fā)】

    轉(zhuǎn)發(fā)自CSDN遠(yuǎn)程穿透的文章:【vscode遠(yuǎn)程開發(fā)】使用SSH遠(yuǎn)程連接服務(wù)器 「內(nèi)網(wǎng)穿透」 遠(yuǎn)程連接服務(wù)器工具有很多,比如XShell、putty等,可以通過ssh來遠(yuǎn)程連接服務(wù)器,但這用于寫代碼并不方便,可能需要現(xiàn)在本地寫好代碼后再將源代碼傳送到服務(wù)器運(yùn)行、服務(wù)器上的圖片也無

    2023年04月21日
    瀏覽(30)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包