如何临时禁用JVM网络连接

时间:2014-07-23 18:14:02

标签: java linux networking

我需要测试某个方法在互联网连接断开时是否仍能正常运行。

此测试可以在Linux,Windows甚至是VM上的Jenkins上运行,因此我认为特定于操作系统的解决方案不是最好的方法。我还认为改变安全策略文件并不理想。

理想的执行流程如下所示:

disableNetwork()
testMethod()
enableNetwork()

1 个答案:

答案 0 :(得分:0)

正如在这里的其他答案中已经说过的那样,没有Java原生方式这样做。因此需要OS解决方案。这就是我为Linux所做的:

public void pullTheCable() {
    Runtime.getRuntime().exec("sudo ifconfig eth0 down");
}

这将禁用您的网络适配器。 (用相应的适配器替换' eth0')。这将再次提出来:

public void pushTheCable() {
    Runtime.getRuntime().exec("sudo ifconfig eth0 up");
}

您还需要编辑文件/ etc / sudoers,以便在不要求输入密码的情况下授予用户执行sudo命令的权限。更多相关内容:

how do you make sudo save the password?

只要我有Windows解决方案,我就会更新此答案。