如何模拟拔出的网络电缆或关闭的服务器?


14

我用netem模拟了网络延迟,这很棒。现在,我想模拟拔出的网络电缆或服务器何时关闭。我需要这样做可以简化对我的应用程序的测试,而我在网络上找不到任何可以帮助我的东西。我的服务器是虚拟CentOS实例,它们在Virtualbox上。我想从php网页上执行此操作。

Answers:


17

只需关闭接口即可。例如,使用eth0:

ip link set eth0 down

备份接口:

ip link set eth0 up

谢谢,我在这里
SafeY

1
那成功了但是ip link set eth0 up
没用

@NancySmith“不工作”没有意义。发生什么错误信息?您是否分配了IP和网络掩码?
克里斯·

我的意思是我ip link set eth0 down通过php和ping使用表明我的服务器无法访问。然后我想让它“恢复”,我ip link set eth0 up通过php 执行并且服务器仍然关闭。
2013年

3
@NancySmith创建另一个无法访问所连接对象的网络接口(使用路由等)。使用该接口SSH到主机。断开通过SSH连接的接口。
克里斯·

7

在通过SSH连接的计算机上使用投票最高的答案时,您将关闭网络,而无法恢复网络。以下是在进行SSH连接时将其关闭并重新启动的方法。

使用接口的示例ens32

如果您运行:

ip link set ens32 down

而且您正在通过SSH连接,由于禁用了网络,因此无法再次启动它,因此无法通过SSH连接到服务器。

我使用以下脚本模拟20秒钟的停机时间:

#!/bin/sh
ip link set ens32 down
sleep 20
ip link set ens32 up

将其另存为downtime.sh,确保该文件具有执行权限,然后运行:

sudo ./downtime.sh

1
好东西。另外,对于那些不确定该关闭哪个接口的人,相关链接:unix.stackexchange.com/questions/125400/…–
Jeutnarg

1
erm ...我是linux新手,但我认为这里可能有一些不好的建议:如果您不对该脚本进行nohup,则执行该脚本后,会话将终止(由于断开连接),并且脚本停止(并且永远不会恢复网络接口)。我认为关于nohup的一些阅读应该很有价值!
DraxDomax '18年

@DraxDomax你说的听起来很合逻辑,但我没有遇到任何问题,不会再次出现。鉴于我对接受的答案有疑问。
模拟

@模拟很抱歉,我无法编辑我的评论。不一定是“坏建议”。实际上,这是一个很好的主动答案,因为90%会发现此问题的人都在尝试做同样的事情:“我需要在断开计算机连接后测试我的软件是否可以工作。我无法访问虚拟主机” 。实际上,我求助于您的脚本(只是我的适配器是br0)-在我的情况下不起作用(从MacOS到CentOS的SSH),我不得不打电话给我们的IT人员以重新启动网络。
DraxDomax '18年

1

在您的virtualbox控制台窗口上,应该有一个Machine下拉菜单。在此之下,有几个动作。其中之一是关闭电源。您需要选择一个立即关闭电源。这是拉动物理服务器电源线的最接近的方法。


我想从网页上做到这一点。当然我知道如何关闭机器的电源。
2013年

而且我不想伪造它。没有真正关闭并重新启动。
2013年

从提到的情况来看netem,我认为问题实际上是关于从服务器上拔下网络电缆,而不是从电源电缆上拔出(尽管不清楚)。
克里斯·唐纳

我将编辑我的问题以使其更加清楚,谢谢
SafeY 2013年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.