电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

java調(diào)用遠(yuǎn)程服務(wù)器的shell腳本以及停止的方法實(shí)現(xiàn)

瀏覽:87日期:2022-08-15 13:37:18

最近接了個(gè)需求,要求遠(yuǎn)程調(diào)shell腳本,你沒(méi)聽(tīng)錯(cuò)!?。⌒枨缶鸵痪湓?,咱是誰(shuí),咱是優(yōu)秀的開(kāi)發(fā)選手??紤]再三,有兩種實(shí)現(xiàn)方式:

方案一:腳本所在服務(wù)器安裝一個(gè)客戶端,也就是自己寫的一個(gè)小程序,本地通過(guò)端口調(diào)目標(biāo)服務(wù)器的程序,然后程序調(diào)本機(jī)上的shell腳本!

優(yōu)點(diǎn):通過(guò)端口調(diào)用,用戶不用暴露服務(wù)器的賬號(hào)密碼,安全性高

缺點(diǎn):我們需要一直維護(hù)這個(gè)客戶端程序,而且每接入一臺(tái)服務(wù)器,都得安裝該客戶端,另外非常考驗(yàn)客戶端程序的健壯性。

方案二:本地直接通過(guò)IP,服務(wù)器賬號(hào)密碼調(diào)遠(yuǎn)程服務(wù)器的shell腳本

優(yōu)點(diǎn):代碼易開(kāi)發(fā),擴(kuò)展時(shí)只用擴(kuò)展服務(wù)端代碼即可

缺點(diǎn):用戶服務(wù)器的賬號(hào)密碼會(huì)暴露給服務(wù)端,密碼安全問(wèn)題

把每種方案的優(yōu)缺點(diǎn)匯報(bào)給leader,leader說(shuō):按第二種來(lái)吧

來(lái)吧??!開(kāi)干,廢話不多說(shuō),直接上代碼:

導(dǎo)入程序所需的軟件包:

<dependency> <groupId>org.jvnet.hudson</groupId> <artifactId>ganymed-ssh2</artifactId> <version>build210-hudson-1</version></dependency>

程序涉及的demo:

import java.io.IOException;import java.io.InputStream;import java.io.UnsupportedEncodingException;import java.nio.charset.Charset; import org.apache.commons.io.IOUtils; import ch.ethz.ssh2.ChannelCondition;import ch.ethz.ssh2.Connection;import ch.ethz.ssh2.Session;import ch.ethz.ssh2.StreamGobbler; public class RemoteShellExecutor { private Connection conn; /** 遠(yuǎn)程機(jī)器IP */ private String ip; /** 用戶名 */ private String osUsername; /** 密碼 */ private String password; private String charset = Charset.defaultCharset().toString(); private final String GET_SHELL_PID = 'ps -ef | grep ’%s’ | grep -v grep |awk ’{print $2}’'; private final String KILL_SHELL_PID = 'kill -15 %s'; private static final int TIME_OUT = 1000 * 5 * 60; /** * 構(gòu)造函數(shù) * @param ip * @param usr * @param pasword */ public RemoteShellExecutor(String ip, String usr, String pasword) { this.ip = ip; this.osUsername = usr; this.password = pasword; } /** * 登錄 * @return * @throws IOException */ private boolean login() throws IOException { conn = new Connection(ip); conn.connect(); return conn.authenticateWithPassword(osUsername, password); } /** * 執(zhí)行腳本 * * @param cmds * @return * @throws Exception */ public ExecuteResultVO exec(String cmds) throws Exception { InputStream stdOut = null; InputStream stdErr = null; ExecuteResultVO executeResultVO = new ExecuteResultVO(); String outStr = ''; String outErr = ''; int ret = -1; try { if (login()) { // Open a new {@link Session} on this connection Session session = conn.openSession(); // Execute a command on the remote machine. session.execCommand(cmds);stdOut = new StreamGobbler(session.getStdout()); outStr = processStream(stdOut, charset);stdErr = new StreamGobbler(session.getStderr()); outErr = processStream(stdErr, charset);session.waitForCondition(ChannelCondition.EXIT_STATUS, TIME_OUT);System.out.println('outStr=' + outStr); System.out.println('outErr=' + outErr);ret = session.getExitStatus(); executeResultVO.setOutStr(outStr); executeResultVO.setOutErr(outErr); } else { throw new Exception('登錄遠(yuǎn)程機(jī)器失敗' + ip); // 自定義異常類 實(shí)現(xiàn)略 } } finally { if (conn != null) { conn.close(); } IOUtils.closeQuietly(stdOut); IOUtils.closeQuietly(stdErr); } return ret; } /** * @param in * @param charset * @return * @throws IOException * @throws UnsupportedEncodingException */ private String processStream(InputStream in, String charset) throws Exception { byte[] buf = new byte[1024]; StringBuilder sb = new StringBuilder(); int len = 0; while ((len=in.read(buf)) != -1) { sb.append(new String(buf,0,len, charset)); } return sb.toString(); } public static void main(String args[]) throws Exception { //調(diào)遠(yuǎn)程shell RemoteShellExecutor executor = new RemoteShellExecutor('192.168.234.123', 'root', 'beebank'); System.out.println(executor.exec('sh /data/checkMysql.sh')); //獲取遠(yuǎn)程shell 進(jìn)程 pid ExecuteResultVO executeResultVO = executor.exec(String.format(GET_SHELL_PID,'sh /data/checkMysql.sh')); //殺掉shell進(jìn)程 ExecuteResultVO executeResultVO1 = executor.exec(String.format(KILL_SHELL_PID ,executeResultVO.getOutStr())); } public class ExecuteResultVO<T>{ private String outStr; private String outErr; //省略get set }}

經(jīng)過(guò)測(cè)試也確實(shí)好用啊,大家可以根據(jù)這個(gè)demo進(jìn)行相應(yīng)的修改。到此這篇關(guān)于java調(diào)遠(yuǎn)程服務(wù)器的shell腳本以及停止的方法實(shí)現(xiàn)的文章就介紹到這了,更多相關(guān)java調(diào)遠(yuǎn)程shell腳本內(nèi)容請(qǐng)搜索好吧啦網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持好吧啦網(wǎng)!

標(biāo)簽: Java
相關(guān)文章:
主站蜘蛛池模板: 湖南长沙商标注册专利申请,长沙公司注册代理记账首选美创! | 硫化罐_蒸汽硫化罐_大型硫化罐-山东鑫泰鑫智能装备有限公司 | 餐饮小吃技术培训-火锅串串香培训「何小胖培训」_成都点石成金[官网] | 沥青灌缝机_路面灌缝机_道路灌缝机_沥青灌缝机厂家_济宁萨奥机械有限公司 | 购买舔盐、舔砖、矿物质盐压块机,鱼饵、鱼饲料压块机--请到杜甫机械 | 理化生实验室设备,吊装实验室设备,顶装实验室设备,实验室成套设备厂家,校园功能室设备,智慧书法教室方案 - 东莞市惠森教学设备有限公司 | 蔬菜清洗机_环速洗菜机_异物去除清洗机_蔬菜清洗机_商用洗菜机 - 环速科技有限公司 | 悬浮拼装地板_篮球场木地板翻新_运动木地板价格-上海越禾运动地板厂家 | 奥运星-汽车性能网评-提供个性化汽车资讯 | 卫生人才网-中国专业的医疗卫生医学人才网招聘网站! | 机房监控|动环监控|动力环境监控系统方案产品定制厂家 - 迈世OMARA | 机房监控|动环监控|动力环境监控系统方案产品定制厂家 - 迈世OMARA | 阳光模拟试验箱_高低温试验箱_高低温冲击试验箱_快速温变试验箱|东莞市赛思检测设备有限公司 | 钢板仓,大型钢板仓,钢板库,大型钢板库,粉煤灰钢板仓,螺旋钢板仓,螺旋卷板仓,骨料钢板仓 | 液压油缸生产厂家-山东液压站-济南捷兴液压机电设备有限公司 | 哈希余氯测定仪,分光光度计,ph在线监测仪,浊度测定仪,试剂-上海京灿精密机械有限公司 | ORP控制器_ORP电极价格-上优泰百科| 上海单片机培训|重庆曙海培训分支机构—CortexM3+uC/OS培训班,北京linux培训,Windows驱动开发培训|上海IC版图设计,西安linux培训,北京汽车电子EMC培训,ARM培训,MTK培训,Android培训 | 全温恒温摇床-水浴气浴恒温摇床-光照恒温培养摇床-常州金坛精达仪器制造有限公司 | 江苏全风,高压风机,全风环保风机,全风环形高压风机,防爆高压风机厂家-江苏全风环保科技有限公司(官网) | 膏方加工_丸剂贴牌_膏滋代加工_湖北康瑞生物科技有限公司 | 细沙回收机-尾矿干排脱水筛设备-泥石分离机-建筑垃圾分拣机厂家-青州冠诚重工机械有限公司 | 高效节能电机_伺服主轴电机_铜转子电机_交流感应伺服电机_图片_型号_江苏智马科技有限公司 | 车载加油机品牌_ 柴油加油机厂家 | 精密模具制造,注塑加工,吹塑和吹瓶加工,EPS泡沫包装生产 - 济南兴田塑胶有限公司 | 润滑油加盟_润滑油厂家_润滑油品牌-深圳市沃丹润滑科技有限公司 琉璃瓦-琉璃瓦厂家-安徽盛阳新型建材科技有限公司 | MTK核心板|MTK开发板|MTK模块|4G核心板|4G模块|5G核心板|5G模块|安卓核心板|安卓模块|高通核心板-深圳市新移科技有限公司 | 二手回收公司_销毁处理公司_设备回收公司-找回收信息网 | 碳钢法兰厂家,非标法兰,定制异型,法兰生产厂家-河北九瑞管道 | 杭州画室_十大画室_白墙画室_杭州美术培训_国美附中培训_附中考前培训_升学率高的画室_美术中考集训美术高考集训基地 | 苏州注册公司_苏州代理记账_苏州工商注册_苏州代办公司-恒佳财税 | 净化板-洁净板-净化板价格-净化板生产厂家-山东鸿星新材料科技股份有限公司 | 北京公寓出租网-北京酒店式公寓出租平台 | 深圳高新投三江工业消防解决方案提供厂家_服务商_园区智慧消防_储能消防解决方案服务商_高新投三江 | 冷却塔改造厂家_不锈钢冷却塔_玻璃钢冷却塔改造维修-广东特菱节能空调设备有限公司 | 房车价格_依维柯/大通/东风御风/福特全顺/江铃图片_云梯搬家车厂家-程力专用汽车股份有限公司 | 江苏皓越真空设备有限公司 | 浙江富广阀门有限公司| 中央空调温控器_风机盘管温控器_智能_液晶_三速开关面板-中央空调温控器厂家 | 冷藏车厂家|冷藏车价格|小型冷藏车|散装饲料车厂家|程力专用汽车股份有限公司销售十二分公司 | 精密钢管,冷拔精密无缝钢管,精密钢管厂,精密钢管制造厂家,精密钢管生产厂家,山东精密钢管厂家 |