package com.pasier.xxx.util; import java.io.IOException; import java.io.InputStream; import java.nio.charset.Charset; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import ch.ethz.ssh2.ChannelCondition; import ch.ethz.ssh2.Connection; import ch.ethz.ssh2.Session; import ch.ethz.ssh2.StreamGobbler; public class RmtShellExecutor { private static final Logger LOG = LoggerFactory.getLogger(RmtShellExecutor.class); private Connection conn; private String ip; private String usr; private String psword; private String charset = Charset.defaultCharset().toString(); private static final int TIME_OUT = 1000 * 5 * 60; public RmtShellExecutor(String ip, String usr, String ps) { this.ip = ip; this.usr = usr; this.psword = ps; } private boolean login() throws IOException { conn = new Connection(ip); conn.connect(); return conn.authenticateWithPassword(usr, psword); } public String exec(String cmds) throws IOException { InputStream stdOut = null; InputStream stdErr = null; String outStr = ""; String outErr = ""; int ret = -1; try { if (login()) { Session session = conn.openSession(); session.execCommand(cmds); stdOut = new StreamGobbler(session.getStdout()); outStr = processStream(stdOut, charset); LOG.info("caijl:[INFO] outStr=" + outStr); stdErr = new StreamGobbler(session.getStderr()); outErr = processStream(stdErr, charset); LOG.info("caijl:[INFO] outErr=" + outErr); session.waitForCondition(ChannelCondition.EXIT_STATUS, TIME_OUT); ret = session.getExitStatus(); } else { LOG.error("caijl:[INFO] ssh2 login failure:" + ip); throw new IOException("SSH2_ERR"); } } finally { if (conn != null) { conn.close(); } if (stdOut != null) stdOut.close(); if (stdErr != null) stdErr.close(); } return outStr; } private String processStream(InputStream in, String charset) throws 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) { String usr = "root"; String password = "12345"; String serverIP = "11.22.33.xx"; String shPath = "/root/ab.sh"; RmtShellExecutor exe = new RmtShellExecutor(serverIP, usr, password); String outInf; try { String[] cmd = {"/bin/sh", "-c", shPath +" "+paramater}; outInf = exe.exec(cmd); System.out.println("outInf= " + outInf); } catch (IOException e) { e.printStackTrace(); } } }
相关推荐
在Java编程中,有时我们需要与操作系统进行交互,执行系统级别的命令,例如在控制台执行CMD命令或者通过SSH连接远程Linux服务器执行shell命令。这在自动化脚本、系统管理或者远程监控等场景中非常常见。本篇文章将...
首先,要实现这个功能,我们需要借助SSH(Secure Shell)协议,它提供了安全的网络服务,允许远程登录到Linux服务器并执行命令。Java中有多个库可以支持SSH连接,例如JSch和Apache SSHD。这里我们以更常用的JSch为例...
在Java开发中,有时我们需要远程连接到Linux服务器执行shell命令,比如进行系统管理、自动化运维或者数据处理等任务。在这种情况下,使用SSH(Secure Shell)协议是常见的解决方案,因为它提供了安全的网络通信。...
sshxcute 就是这样一个框架工具集,它基于 JSCH 构建,允许工程师利用Java 代码通过 SSH 连接远程批量执行 Linux/UNIX 系统上的命令或者脚本,同时加入了判断成功与否,取回输出等多种实用功能。sshxcute 不管是针对...
本文将详细介绍如何在Jenkins中配置并执行远程Linux命令。 #### 二、准备工作 在开始配置前,请确保以下几点: 1. **Jenkins已安装**:确保您的系统中已经安装了Jenkins。 2. **SSH Plugin**:在Jenkins中安装并...
Java实现远程执行SHELL, JAVA实现远程登陆执行shell脚本。上传文件到远程服务器,下载远程服务器资源。 ShellExecutor exe = new ShellExecutor("192.168.1.1", 22, "USERNAME", "PASSWORD"); if (exe.login()) {...
LINUX SHELL 命令练习题 本次练习题涵盖了 LINUX SHELL commands 的多个方面,包括文件类型的确定、文件权限的修改、目录管理、文件重命名、系统初始化信息、系统启动级别的切换、后台执行程序、vi 编辑器的使用等...
java-telnet连接远程服务器并执行shell命令 具体代码 java-telnet
具体来说,开发者可能使用了Java的SSH(Secure Shell)库,如JSch或者Apache MINA,这些库提供了与远程Linux服务器安全连接并执行命令的能力。 SSH协议是一种在网络上传输数据的安全方式,通常用于远程登录、文件...
Ganymed SSH2库允许Java应用程序通过SSH连接到其他系统,并执行包括shell命令在内的各种任务。因此,这个“JAVA执行shell命令小工具”可能依赖于Ganymed SSH2库来实现远程执行shell命令的功能。 在实际应用中,使用...
本文将详细讲解 Linux Shell 命令解释步骤的实现过程,包括打印提示符、得到命令行、解析命令、查找文件、准备参数和执行命令等步骤。 打印提示符 在 Linux Shell 中,打印提示符是 Shell 解释命令的第一步。 ...
* 发送文件:我们可以使用 Java 调用 Shell 命令来发送文件,例如使用 `scp` 命令来发送文件到远程服务器。 * 批量任务:我们可以使用 Java 调用 Shell 命令来执行批量任务,例如使用 `bash` 命令来执行批量脚本。 ...
3. **Shell脚本执行**:在SSH连接建立后,Java程序可以通过执行`exec`命令来运行远程服务器上的Shell脚本。脚本可以包含任意的Linux或Unix命令,甚至复杂的流程控制语句。 4. **输入/输出流处理**:为了获取Shell...
4. 服务器端接收到命令后,使用Runtime或ProcessBuilder类执行Shell命令,并获取命令执行结果。 5. 服务器端将命令执行的结果通过Socket回传给客户端。 6. 客户端接收并处理服务器返回的数据,可能包括命令执行的...
最牛B的 Linux Shell 命令,最牛B的 Linux Shell 命令,
本文还讨论了Linux Shell命令在异常操作检测中的应用,并对该方法的优缺点进行了分析。本文提出的基于Linux Shell命令的用户异常操作检测方法可以满足数据中心安全需求,提高数据中心的安全性和可靠性。 Linux ...
Java远程调用Shell是一种技术,它允许通过Java程序执行远程服务器上的操作系统命令,这在系统集成、自动化运维或跨平台任务调度中非常有用。这里,我们深入探讨如何实现这一功能,以及涉及的关键知识点。 首先,...
linux shell命令tr的用法
java远程登录Linux,并执行shell命令。
- **解析**:`os.system`用于执行Shell命令并等待其结束。与`subprocess`相比,它的功能较简单,但同样存在注入风险。 #### 三、编写Shell脚本并通过Python调用 除了直接在Python中执行多条命令外,还可以将这些...