通过Java实现bash命令过程解析
这篇文章主要介绍了通过Java实现bash命令过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
1、BASH命令简介
2、Java实现BASH命令执行Shell脚本
1)代码实现如下:
importch.ethz.ssh2.Connection; importch.ethz.ssh2.Session; importch.ethz.ssh2.StreamGobbler; importorg.slf4j.Logger; importorg.slf4j.LoggerFactory; importjava.io.BufferedReader; importjava.io.InputStream; importjava.io.InputStreamReader; importjava.util.ArrayList; importjava.util.List; publicclassBashUtil{ privateLoggerlogger=LoggerFactory.getLogger(BashUtil.class); privateStringhostname; privateStringusername; privateStringpassword; privateintport; privateConnectionconn; privateBashUtil(){ } publicBashUtil(Stringhostname,Stringusername,Stringpassword){ this(hostname,username,password,22); } publicBashUtil(Stringhostname,Stringusername,Stringpassword,Integerport){ this.hostname=hostname; this.username=username; this.password=password; if(port==null){ port=22; }else{ this.port=port; } } /** *创建连接并认证 *@return */ publicBooleanconnection(){ try{ conn=newConnection(hostname,port); conn.connect(); booleanisAuthenticated=conn.authenticateWithPassword(username,password); returnisAuthenticated; }catch(Exceptione){ e.printStackTrace(); returnfalse; } } /** *关闭连接 */ publicvoidclose(){ try{ conn.close(); conn=null; }catch(Exceptione){ e.printStackTrace(); } } /** *执行shell命令 *@paramcommand *@return */ publicListcommand(Stringcommand){ if(conn==null&&!connection()){ logger.error("Authenticationfailed."); returnnull; } List result=newArrayList (); try{ Sessionsess=conn.openSession(); sess.execCommand(command); InputStreamstdout=newStreamGobbler(sess.getStdout()); InputStreamstderr=newStreamGobbler(sess.getStderr()); BufferedReaderbr_out=newBufferedReader(newInputStreamReader(stdout,"utf-8")); BufferedReaderbr_err=newBufferedReader(newInputStreamReader(stderr,"utf-8")); StringBuffersb_err=newStringBuffer(); Stringline=null; while((line=br_out.readLine())!=null){ result.add(line.trim()); } while((line=br_err.readLine())!=null){ sb_err.append(line+"\n"); } if(isNotEmpty(sb_err.toString())){ logger.error(sb_err.toString()); returnnull; } returnresult; }catch(Exceptione){ e.printStackTrace(); } returnnull; } privatestaticbooleanisEmpty(Stringcontent){ if(content==null){ returntrue; }else{ return"".equals(content.trim())||"null".equalsIgnoreCase(content.trim()); } } privatestaticbooleanisNotEmpty(Stringcontent){ return!isEmpty(content); } publicstaticvoidmain(String[]args){ Stringhostname="192.168.123.234";//此处根据实际情况,换成自己需要访问的主机IP StringuserName="root"; Stringpassword="password"; Integerport=22; Stringcommand="cd/home/miracle&&pwd&&ls&&catluna.txt"; BashUtilbashUtil=newBashUtil(hostname,userName,password,port); List resultList=bashUtil.command(command); StringBufferresult=newStringBuffer(""); resultList.forEach(str->result.append(str+"\n")); System.out.println("执行的结果如下:\n"+result.toString()); } }
2)执行结果如下:
执行的结果如下: /home/miracle luna.txt Hello,I'mSshUtil. Nicetomeetyou.^_^
3)pom.xml引用依赖包如下:
org.slf4j slf4j-api 1.7.21 ch.ethz.ganymed ganymed-ssh2 262
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。