我试图暂时禁止ip地址,如果有人试图不通过代理服务器加入到我的服务器。Java Runtime.exec(“sleep 180; ...”)
String st = e.getRealAddress() + "";
if(!st.startsWith("/x.x.x.x")) {
Runtime runtime = Runtime.getRuntime();
runtime.exec("iptables -A INPUT -s " + st.replace("/","") + " -j DROP");
runtime.exec("sleep 180 ; iptables -D INPUT -s " + st.replace("/","") + " -j DROP");
}
但由于某种原因只执行-A命令,并且在我等了三分钟后,我无法连接。我做错了什么?
Runtime.exec没有启动shell,你不能给它shell语法命令,如'sleep 180;等等'。 – pvg
但是它为什么输出第一个命令? –
,因为第一个命令就是这样一个命令。在第二个例子中,你给了它两个命令并期待类似shell的行为。 Runtime exec不是一个shell,它一次只需要一个命令。只需使用Thread.sleep进行睡眠。 – pvg