通过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;
}
Listresult=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);
ListresultList=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(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。