首页
学习
活动
专区
圈层
工具
发布

Linux:java通过Runtime.getRuntime().exec()执行shell,Process.waitFor()返回Required key not available(126)问题

通过Java方法去调用shell脚本并执行,该方法会先后调用两个脚本,出现问题的是调用第二个脚本的时候,出现了该问题 问题 使用方法Runtime.getRuntime().exec()调用并执行脚本...Process.waitFor()方法返回值是否为0来确定是否成功执行(成功为0) 返回错误码126 查看Process.waitFor()方法的返回值:Required key not available...于是只能捕捉进程的输出来看是否能找到蛛丝马迹 增加代码如下: Process proc = Runtime.getRuntime().exec(strMakePathPath); StreamGobbler...; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; public class...解决 直接权限安排 chmod 777 文件 再次执行代码,发现问题解决了 结论 java通过Runtime.getRuntime().exec()执行shell,Process.waitFor()返回

28000
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    初探java安全之反射(2)

    java执行命令 Runtime run = Runtime.getRuntime();//获取 Runtime 对象 run.exec("calc");//执行calc命令弹出计算器 getMethod...cmd = clazz.getMethod("exec", String.class); invoke() invoke() 方法用于执行 getMethod 获取的方法,看看它的相关参数 第一个参数是函数所在的对象或...**类(执行静态方法可用)**,第二个参数是所执行的函数的对象参数 依旧拿 exec(String command) 方法来说 Runtime run = Runtime.getRuntime();//...如果直接 exec 传入的是字符串的话 Runtime.getRuntime().exec("calc"); 可以看到经过最终会跳转到 exec 的另一个重载方法上。...,即可以传递 String[] 类型 即 Runtime.getRuntime().exec("calc"); 底层就是执行了 new ProcessBuilder(new String[] {"calc

    58140

    Scala和Kotlin脚本编程

    使用Java API中提供的Runtime.getRuntime().exec()函数或者ProcessBuilder类创建一个Process对象调用外部命令。...import java.lang.Runtime val process: Process = Runtime.getRuntime().exec("ls /Users/TheOneGIS/Desktop...kotlinc -script Main.kts,输出结果如下: 11 data raw [这里有一个空行] 注意: Runtime.getRuntime().exec()函数中直接输入命令名称加参数组成的字符串...Process.waitFor()等待调用的外部程序执行完毕再接着执行脚本后续代码。 从输出结果的InputStream中得到文本输出,可以看到最终的文本输出每一行之后都会增加一个换行符。...在命令行中运行scala Main.scala,得到执行结果: 11 data raw Process的!方法是有返回值的,这里我们直接舍弃了,并不关心ls的返回值,我们只关心ls命令的输出结果。

    2K10

    探秘Java Runtime类:深入了解JVM运行时环境,有两下子!

    常用方法Java Runtime类提供了很多有用的方法,下面简要介绍几个常用的方法:availableProcessors():返回JVM可用的处理器数目;exec():启动一个独立进程,并在此进程中执行指定的命令...;exec()exec()方法启动一个独立进程,并在此进程中执行指定的命令。...exec方法:exec方法接受一个字符串参数command,并返回一个Process对象,该对象表示执行指定命令创建的子进程。这个方法在示例中没有实现,需要进一步开发。...单例设计模式Runtime类采用了单例设计模式,确保了一个JVM内只存在一个Runtime实例。这种设计不仅保证了资源的高效利用,也使得对JVM的全局访问成为可能。...exec():允许我们启动新进程,执行系统命令,为Java程序提供了与操作系统交互的能力。

    82841

    java for循环里面执行sql语句操作,有效结果只有一次,只执行了一次sql mybatis 循环执行update生效一次 实际只执行一次

    java后台controller中,for循环执行数据库操作,但是发现实际仅仅执行了一次,或者说提交成功了一次,并没有实际的个数循环 有可能是同一个对象导致的 可以仔细看一下下面两段代码有什么区别 ps...boolean updateResult = Service.update(entity ); } 很明显上面是声明了一个引用,每一次都创建了一个新的对象,并执行...update操作 下面是同一个对象,不断地改变赋值,然后执行了update操作 其结果截然不同: 上面的一段代码,会执行实际的次数,循环0,1,2,3,4    执行5次update 下面的代码仅仅只会执行一次...,因为是同一个对象 所以如果循环里面,调用service,service调用了dao执行了sql,如果发现仅仅只是执行了一次,可以考虑怀疑是不是对象是同一个

    3.5K30

    逆向Java反序列化:从漏洞挖掘者的视角拆解CC1链的发现与构造

    前言Apache Commons Collections 是一个开源的 Java 工具类库,属于 Apache Commons 项目的一部分。...它提供了许多扩展和增强标准 Java 集合框架的功能,帮助开发者更高效地处理集合操作。...说明这一段链条成立public void test2(){Runtime runtime = Runtime.getRuntime();String methodName = "exec";Class[...究其原因,是执行过程中,到达漏洞触发点发现并没有将Runtime对象传进来我们对此进行分析,是因为在AnnotationInvocationHandler的452行,出现了 new AnnotationTypeMismatchExceptionProxy..."方法,// 执行"calc"命令,启动计算器程序(适用于Windows系统)new InvokerTransformer("exec",                             //

    45310

    java Runtime.exec()执行shellcmd命令:常见的几种陷阱与一种完善实现

    @toc背景说明我们项目要java执行命令“dmidecode -s system-uuid”获取结果,然而碰到问题,当项目一直执行好久后,Runtime.getRuntime().exec()获取结果为空...Runtime.getRuntime().exec()执行JVM之外的程序:常见的几种陷阱前言日常java开发中,有时需要通过java运行其它应用功程序,比如shell命令等。...Runtime.exec()常见的几种陷阱以及避免方法陷阱1:IllegalThreadStateException通过exec执行java命令为例子,最简单的方式如下。...执行exec后,通过Process获取外部进程的返回值并输出。...例如,下面的例子Process process = runtime.exec("java -version > a.txt");这样并不会产出a.txt文件。

    1.4K10

    Java代码审计| Spring框架知识篇

    0X01 传统Java代码命令执行 1.知识说明 由于业务需求,程序有可能要执行系统命令的功能,但如果执行的命令用户可控,业务上有没有做好限制,就可能出现命令执行漏洞。...但Spring框架漏洞则是某组件可能存在解析执行系统命令代码的方法并根据命令执行方法(Runtime.getRuntime().exec(cmd))构造执行系统命令的POC,如果命令执行成功,造成Spring...2.例子 此处以getRuntime为例,Runtime.getRuntime().exec(cmd)执行系统命令并弹出计算器。...SpEL是单独模块,只依赖于core模块,不依赖于其他模块,可以单独使用。...+\\.com'} sdfd 0X03 SpEL表达式与命令执行组合 此处以SpEL表达式与getRuntime组合为例,T(java.lang.Runtime).getRuntime().exec('

    1.1K20

    【JAVA代码审计】——1、Spring框架知识篇

    0X01 传统Java代码命令执行  1.知识说明  由于业务需求,程序有可能要执行系统命令的功能,但如果执行的命令用户可控,业务上有没有做好限制,就可能出现命令执行漏洞。 ...但Spring框架漏洞则是某组件可能存在解析执行系统命令代码的方法并根据命令执行方法(Runtime.getRuntime().exec(cmd))构造执行系统命令的POC,如果命令执行成功,造成Spring...2.例子  此处以getRuntime为例,Runtime.getRuntime().exec(cmd)执行系统命令并弹出计算器。 ...系统命令的执行结果:  此方法将产生一个本地的进程,并返回一个Process子类的实例(注意:Runtime.getRuntime().exec(cmd)返回的是一个Process类的实例)该实例可用于控制进程或取得进程的相关信息...SpEL是单独模块,只依赖于core模块,不依赖于其他模块,可以单独使用。

    68620

    Java调用Python的错误

    error 错误就是我的程序太多了,程序命名混乱,导致执行了不该执行的程序,而我以为它跑通了。...这个方法: Runtime.getRuntime().exec("python D:\\studentdb.py id password"); 并不能传递形参!!!...只可以这样使用: Runtime.getRuntime().exec(“python D:\studentdb.py 12345678 666666”); 这样是可以把学号和密码传入Python...之前也有注意到这个方法,但是由于考虑到它的复杂性,和Runtime.getRuntime().exec()方法的简单性,就没有往这里想,毕竟程序员是最懒的。...第一种方法需要花时间。 第二种方法太笨,在处理多并发的活动时可能会崩塌。而且效率低。 思前想后,为了以后工作的顺利进行,还是选择第一种吧,重新写Python程序为2。

    2.2K20

    MySQL实战第十九讲-为什么我只查一行的语句,也执行这么慢?

    第一类:查询长时间不返回 如下所示,在表 t 执行下面的 SQL 语句: select * from t where id=1; 查询结果长时间不返回。...因为占有行锁的是 update 语句,这个语句已经是之前执行完成了的,现在执行 KILL QUERY,无法让这个事务去掉 id=1 上的行锁。 实际上,KILL 4 才有效,也就是说直接断开这个连接。...扫描行数多,所以执行慢,这个很好理解。 但是接下来,我们再看一个只扫描一行,但是执行很慢的语句。...小结 今天我给你举了在一个简单的表上,执行“查一行”,可能会出现的被锁住和执行慢的例子。这其中涉及到了表锁、行锁和一致性读的概念。 在实际使用中,碰到的场景会更复杂。...由于 id 上有索引,所以可以直接定位到 id=1 这一行,因此读锁也是只加在了这一行上。

    1.4K30
    领券