怎么用java代码调用远程Linux上的shell脚本

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了怎么用java代码调用远程Linux上的shell脚本相关的知识,希望对你有一定的参考价值。

求实例代码

package org.shirdrn.shell;

import java.io.IOException;
import java.io.InputStream;
import java.nio.charset.Charset;

import ch.ethz.ssh2.Connection;
import ch.ethz.ssh2.Session;

/**
* 远程Shell脚本执行工具
*
* @author Administrator
*/
public class RemoteShellTool

private Connection conn;
private String ipAddr;
private String charset = Charset.defaultCharset().toString();
private String userName;
private String password;

public RemoteShellTool(String ipAddr, String userName, String password, String charset)
this.ipAddr = ipAddr;
this.userName = userName;
this.password = password;
if(charset != null)
this.charset = charset;


/**
* 登录远程Linux主机
*
* @return
* @throws IOException
*/
public boolean login() throws IOException
conn = new Connection(ipAddr);
conn.connect(); // 连接
return conn.authenticateWithPassword(userName, password); // 认证


/**
* 执行Shell脚本或命令
*
* @param cmds 命令行序列
* @return
*/
public String exec(String cmds)
InputStream in = null;
String result = "";
try
if (this.login())
Session session = conn.openSession(); // 打开一个会话
session.execCommand(cmds);
in = session.getStdout();
result = this.processStdout(in, this.charset);
conn.close();

catch (IOException e1)
e1.printStackTrace();

return result;


/**
* 解析流获取字符串信息
*
* @param in 输入流对象
* @param charset 字符集
* @return
*/
public String processStdout(InputStream in, String charset)
byte[] buf = new byte[1024];
StringBuffer sb = new StringBuffer();
try
while (in.read(buf) != -1)
sb.append(new String(buf, charset));

catch (IOException e)
e.printStackTrace();

return sb.toString();

参考技术A public class Dy
    public static void main(String[] args)
        Runtime.getRuntime().exec("命令");
    

本回答被提问者采纳
参考技术B java 远程调用

java 调用 shell 脚本

项目需求做一个视频传输,需要一个例子java调用shell脚本

参考技术A 在写程序时,有时需要在java程序中调用shell脚本,可以通过Runtime的exec方法来调用shell程序,运行脚本。每个Java 应用程序都有一个Runtime 类实例,使应用程序能够与其运行的环境相连接。通过Runtime对象可以返回运行环境的情况,包括CPU数,虚拟机内存大小等,并能够通过exec方法调用执行命令。可以通过getRuntime 方法获取当前Runtime实例。 public boolean ExeShell() Runtime rt = Runtime.getRuntime(); try Process p = rt.exec(checkShellName); if(p.waitFor() != 0) return false; catch (IOException e) SysLog.error("没有找到检测脚本"); return false; catch (InterruptedException e) e.printStackTrace(); return false; return true; 其中p.waitFor()语句用来等待子进程结束,其返回值为进程结束退出码。

以上是关于怎么用java代码调用远程Linux上的shell脚本的主要内容,如果未能解决你的问题,请参考以下文章

linux shell调用java的jar包怎么写?

linux怎么远程执行另一台linux机器上的shell文件?

shell脚本怎么调用其他shell脚本

利用shell脚本执行ssh远程另一台主机执行命令并返回命令的结果集

linux中,a文件怎么用java调用

原Java程序调用远程Shell脚本