Java Runtime.exec(“sleep 180; ...”)

时间:2015-12-13 09:48:43

标签: java ssh

如果有人试图不通过代理连接到Minecraft服务器,我试图暂时禁止ip-adress。

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命令,在我等了三分钟之后我无法连接。我做错了什么?

1 个答案:

答案 0 :(得分:0)

你可以:

  • 在java中分解自己的命令:iptables,wait,sleep,iptables,...

  • 然后你必须先等待iptables才能完成:

使用waitFor:

struct ss {
    char foo[];
    char bar[3];
    int bazSize;
    char baz[];
}