java 远程 shell脚本_Java 远程调用 shell脚本
* pom.xml 引入相關jar包
```
ch.ethz.ganymed
ganymed-ssh2
262
```
* 遠程服務器上代碼
```
#/bin/bash
echo ?"hello world"
```
* 相關Java代碼
```
public class RemoteShellExecutor {
private Connection conn;
private String ip;
private String osUserName;
private String password;
private String charset = Charset.defaultCharset().toString();
private static final int TIME_OUT = 1000 * 5 * 60;
public RemoteShellExecutor(String ip, String username, String password) {
this.ip = ip;
this.osUserName = username;
this.password = password;
}
private boolean login() throws IOException {
conn = new Connection(ip);
conn.connect();
return conn.authenticateWithPassword(osUserName, password);
}
public int exec(String cmds) throws IOException {
InputStream stdOut = null;
InputStream stdErr = null;
String outStr = "";
String outErr = "";
int ret = 1;
if (login()) {
try {
Session session = conn.openSession();
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();
} finally {
if (conn != null) {
conn.close();
}
IOUtils.closeQuietly(stdOut);
IOUtils.closeQuietly(stdErr);
}
}
return ret;
}
public String processStream(InputStream in, String charset)
throws UnsupportedEncodingException, IOException {
byte[] buf = new byte[1024];
StringBuilder sb = new StringBuilder();
while (in.read(buf) != -1) {
sb.append(new String(buf, charset));
}
return sb.toString();
}
public static void main(String[] args) throws IOException {
RemoteShellExecutor rse = new RemoteShellExecutor("IP", "root", "12312");
System.out.println(rse.exec("/root/test_shell.sh"));
}
}
```
* 輸出結果
```
outStr = hello world
outErr =
0
```
總結
以上是生活随笔為你收集整理的java 远程 shell脚本_Java 远程调用 shell脚本的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 如何直接翻译图片中的文字如何直接翻译图片
- 下一篇: java课程总结_java课程总结报告.