import com.jcraft.jsch.*; import com.xx.dc.beans.Progress; import com.xx.dc.beans.ProgressMessage; import com.xx.dc.service.SessionManager; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import java.io.*; import java.util.Arrays; import java.util.Date; import java.util.List; public class ShellUtils { private static Log log = LogFactory.getLog(ShellUtils.class); public static Session getSession(String user, String passwd, String host) throws JSchException { JSch jsch = new JSch(); Session session = jsch.getSession(user, host, 22); session.setPassword(passwd); java.util.Properties config = new java.util.Properties(); config.put("StrictHostKeyChecking", "no"); session.setConfig(config); session.connect(); return session; } /** * 执行相关的命令 * @throws JSchException */ public static void execCmd(String command, String user, String passwd, String host, final String processID) throws JSchException { execCmd(command, user, passwd, host, processID, null); } public static void execCmd(Session session, String command, final String processID, PrintStream ps) throws JSchException { StringBuilder ret = new StringBuilder(); BufferedReader reader = null; Channel channel = null; try { channel = session.openChannel("exec"); ((ChannelExec) channel).setCommand(command); channel.setInputStream(null); ((ChannelExec) channel).setErrStream(new ErrorOutputStream(new IWriter() { @Override public void write(String content) { trace(processID, content); } @Override public void write(String content, Exception e) { trace(processID, content, e); } })); channel.connect(); InputStream in = channel.getInputStream(); reader = new BufferedReader(new InputStreamReader(in)); String buf = null; while ((buf = reader.readLine()) != null) { if (ps != null) { ps.println(buf); } trace(processID, buf); } } catch (IOException e) { trace(processID, e.getMessage(), e); } catch (JSchException e) { trace(processID, e.getMessage(), e); } finally { try { channel.disconnect(); reader.close(); } catch (IOException e) { trace(processID, e.getMessage(), e); } } } /** * 执行相关的命令 * @throws JSchException */ public static void execCmd(String command, String user, String passwd, String host, final String processID, PrintStream ps) throws JSchException { Session session = getSession(user, passwd, host); try { execCmd(session, command, processID, ps); } finally { session.disconnect(); } } private static void trace(String processID, String message) { trace(processID, message, null); } private static void trace(String processID, String message, Throwable e) { MemCachedManager memCachedManager = MemCachedManager.getInstance(); Object progress = memCachedManager.get(processID); if (progress == null) { progress = new Progress(processID); } List<ProgressMessage> messages = ((Progress) progress).getMessages(); if (e == null) { log.info("[Shell Processing:" + processID + "]" + message); messages.add(new ProgressMessage(message)); } else { messages.add(new ProgressMessage(message, true)); if (!StringUtils.isEmpty(e.getMessage())) { messages.add(new ProgressMessage("Error details:" + e.getMessage(), true)); log.error("[Shell Processing:" + processID + "]" + message, e); } else { log.error("[Shell Processing:" + processID + "]" + message); } ((Progress) progress).setHasError(true); } Date expiry = new Date(System.currentTimeMillis() + (1000 * 60 * 60));// 有效期一个小时 memCachedManager.set(processID, progress, expiry); } public static void main(String[] args) { try { execCmd("hadoop distcp -overwrite hdfs://172.18.149.42:50070/tmp/dmp/ode/all_click_stream_data hdfs://yh/dmp/external/ode/all_click_stream_data", "dmp", "1234qwer", "172.18.149.134", "test"); //System.out.println(System.getProperty("line.separator")); } catch (Exception e) { e.printStackTrace(); } } }
相关推荐
该工具包可实现远程调用Shell脚本,可帮助您轻松实现java远程调用Shell脚本
boyurl是一个通过PHP来远程执行shell脚本工具。整个程序只有两个文件,一个PHP文件,一个shell安装脚本,易于使用和安装。
Java实现远程执行SHELL, JAVA实现远程登陆执行shell脚本。上传文件到远程服务器,下载远程服务器资源。 ShellExecutor exe = new ShellExecutor("192.168.1.1", 22, "USERNAME", "PASSWORD"); if (exe.login()) {...
该工具是基于SSH2协议的实现,在使用它的过程中非常容易,只需要指定合法的用户名口令,或者授权认证文件,就可以创建到远程Linux主机的连接,在建立起来的会话中调用该Linux主机上的脚本文件,执行相关操作。
shell2http, 通过HTTP服务器执行 shell 命令 shell2http 用于执行 shell 命令的http服务器。 为开发,Prototype或者远程控制而设计。 通过两个 命令行 参数,路径和 shell 命令设置。 默认情况下绑定到:8080.用法
NULL 博文链接:https://killeraction.iteye.com/blog/1022141
主要介绍了Spring Boot调用 Shell 脚本实现看门狗功能,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
java-telnet连接远程服务器并执行shell命令 具体代码 java-telnet
在服务器端 通过.sh shell脚本启动datax工具 启动脚本放置在datax的bin目录下,进入bin目录通过./start.sh /job/json文件名称 启动datax 工具
本人根据实际项目需求所开发的,SSH2远程执行Linux中Shell脚本Java小工具,亲测有效!里赋有已打好的程序jar包及工具使用说明,简单易用,很方便哟!
将压缩包中的jar包和example导入到包中,更改ip,username,passwd,就可以直接运行了!~~
主要介绍了Java远程调用Shell脚本并获取输出信息,本文通过实例代码给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
主要介绍了ssh远程执行命令方法和Shell脚本实例,本文讲解了ssh执行远程操作方法和远程执行命令shell脚本示例,需要的朋友可以参考下
shell脚本,通过snmp方式获取远程服务器的CPU内存和硬盘的使用率,需要支持snmpget和snmpwalk命令,并且为了支持小数运算,需要安装bc命令。
通过A服务器自动登录其他服务器自动传输文件、删除文件、自动检测tomcat启动状态,控制启动和停止、可配置多条服务器进行同步处理,适合集群管理
【Spring boot配置模板】java远程执行shell命令(支持向多主机发起远程命令)前言pom依赖支持配置yml建类调用后记 前言 受2020年初的新型肺炎病毒影响,多日宅在家中无聊至极,就在琢磨一套调度系统,想用来管理维护...
linux下远程执行命令脚本,可传密码,提升权限
1. ssh 远程到主机;...很多时候我们可能需要远程执行服务器上的脚本来修改账号密码,此时就没有办法进行交互了。 此时可以使用如下两种方式修改密码: 方式1: echo password | passwd testuser --stdin > /dev
shell脚本自动化运行job,运维,测试,开发作持续集成
Python – paramiko 模块远程执行ssh 命令 nohup 不生效的问题解决 1、使用 paramiko 模块ssh 登陆到 linux 执行nohup命令不生效 # 执行命令 def command(ssh_config, cmd, result_print=None, nohup=False): ssh ...