package com.chrtc.common.util;
import com.jcraft.jsch.ChannelExec;
import com.jcraft.jsch.JSch;
import com.jcraft.jsch.JSchException;
import com.jcraft.jsch.Session;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.util.ArrayList;
import java.util.List;
/**
* @create 2021-12-17 18:11
* @desc JSch工具類
**/
public class JSchUtils {
private static JSch jSch = null;
private static Session session;
/***
* @Author xhh
* @Description 獲取session
* @GreateTime 2021/12/17 18:16
* @Params []
* @return
*/
public static Session getSession() throws JSchException {
//創(chuàng)建JSch對(duì)象
if (null == jSch) {
synchronized (JSch.class) {
if (jSch == null) {
jSch = new JSch();
}
}
}
//"~/.ssh/id_rsa"
//檢查本地是否有SSH Key存在
if (Files.exists(Paths.get("1111aaaa"))) {
//設(shè)置私鑰
jSch.addIdentity("1111aaaa", "xhh");
}
//獲取session
if (null == session) {
synchronized (Session.class) {
if (session == null) {
session = jSch.getSession("root", "192.168.21.11", 22);
}
}
}
session.setPassword("root");
session.setConfig("StrictHostKeyChecking", "no");
return session;
}
/***
* @Author xhh
* @Description 執(zhí)行shell command命令
* @GreateTime 2021/12/17 18:41
* @Params [session, command]
* @return
*/
public static List<String> remoteExecute (Session session, String command) throws JSchException {
List<String> resultLines = new ArrayList<>();
ChannelExec channel = null;
try {
//創(chuàng)建通道執(zhí)行器
channel = (ChannelExec) session.openChannel("exec");
//執(zhí)行命令
channel.setCommand(command);
//或缺輸入流
InputStream input = channel.getInputStream();
//連接時(shí)間
channel.connect(10000);
//讀取流
try {
BufferedReader inputReader = new BufferedReader(new InputStreamReader(input));
String inputLine = null;
while ((inputLine = inputReader.readLine()) != null) {
resultLines.add(inputLine);
}
} finally {
if (input != null) {
try {
//關(guān)流
input.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
} catch (IOException e) {
e.printStackTrace();
} finally {
if (channel != null) {
try {
channel.disconnect();
} catch (Exception e) {
e.printStackTrace();
}
}
}
return resultLines;
}
}
java執(zhí)行l(wèi)inux命令之JSch
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
- 文/潘曉璐 我一進(jìn)店門湿蛔,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)膀曾,“玉大人,你說(shuō)我怎么就攤上這事阳啥√硪辏” “怎么了?”我有些...
- 文/不壞的土叔 我叫張陵察迟,是天一觀的道長(zhǎng)斩狱。 經(jīng)常有香客問(wèn)我耳高,道長(zhǎng),這世上最難降的妖魔是什么喊废? 我笑而不...
- 正文 為了忘掉前任祝高,我火速辦了婚禮栗弟,結(jié)果婚禮上污筷,老公的妹妹穿的比我還像新娘。我一直安慰自己乍赫,他們只是感情好瓣蛀,可當(dāng)我...
- 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著雷厂,像睡著了一般惋增。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上改鲫,一...
- 那天诈皿,我揣著相機(jī)與錄音,去河邊找鬼像棘。 笑死稽亏,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的缕题。 我是一名探鬼主播截歉,決...
- 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼烟零!你這毒婦竟也來(lái)了瘪松?” 一聲冷哼從身側(cè)響起,我...
- 序言:老撾萬(wàn)榮一對(duì)情侶失蹤锨阿,失蹤者是張志新(化名)和其女友劉穎宵睦,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體墅诡,經(jīng)...
- 正文 獨(dú)居荒郊野嶺守林人離奇死亡壳嚎,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
- 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了书斜。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片诬辈。...
- 正文 年R本政府宣布穿撮,位于F島的核電站缺脉,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏悦穿。R本人自食惡果不足惜攻礼,卻給世界環(huán)境...
- 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望栗柒。 院中可真熱鬧礁扮,春花似錦、人聲如沸瞬沦。這莊子的主人今日做“春日...
- 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)逛钻。三九已至僚焦,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間曙痘,已是汗流浹背芳悲。 一陣腳步聲響...
- 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像惩嘉,于是被迫代替她去往敵國(guó)和親罢洲。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
推薦閱讀更多精彩內(nèi)容
- 1. 安裝vue-clipboard2 2. main.js中添加 Vue掛載 3. 組件中使用 轉(zhuǎn)載自 Vue ...
- 1文黎、對(duì)查詢進(jìn)行優(yōu)化惹苗,應(yīng)盡量避免全表掃描,首先應(yīng)考慮在 WHERE 及 ORDER BY 涉及的列上建立索引耸峭。 2桩蓉、...
- Print.js javascript庫(kù) 實(shí)現(xiàn)頁(yè)面打印 官網(wǎng)地址 您可以從GitHub版本下載最新版本的Print...
- 了解RabbitMQ[https://baike.baidu.com/item/rabbitmq/9372144?...