我必须模拟未插拔的网线,以测试我们公司正在开发的所有应用程序的问题。
我在虚拟机上大约有 6 台 Cent-OS 虚拟机。
从 php 网页,我必须选择一台服务器并停止其网络,然后重新启动它。当然,我使用 ssh 远程连接到其他服务器。
如果我停止了服务器上的 eth0(主网络)。我将无法再次使用 ssh 访问它。所以我不得不找到另一种方法来执行此操作。
我借助此方法通过 virtualbox 在服务器之间建立了另一个网络连接(仅主机)教程然后我登录到其中一台服务器,使用以下两个命令为这个新网络配置 IP:
sudo ifconfig eth1 192.168.1.101 up
还
sudo ifconfig eth1 inet 192.168.1.101 broadcast 192.168.1.255 netmask 255.255.255.0 up
但是当我尝试通过 php 进行 ssh 时:
exec('ssh [email protected] 2>&1; ',$output);
我得到这个输出:
ssh: connect to host 192.168.1.101 port 22: No route to host
我不知道我错过了什么?
编辑:这是我跑路线时得到的
$ route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
192.168.1.0 0.0.0.0 255.255.255.0 U 0 0 0 eth1
192.168.0.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
169.254.0.0 0.0.0.0 255.255.0.0 U 1002 0 0 eth0
0.0.0.0 192.168.0.204 0.0.0.0 UG 0 0 0 eth0
答案1
这是答案:在 CentOS1 上:
sudo ifconfig eth1 192.168.1.191 netmask 255.255.255.0 up
sudo touch /etc/sysconfig/network-scripts/ifcfg-eth1
sudo vi /etc/sysconfig/network-scripts/ifcfg-eth1
DEVICE="eth1"
IPADDR=192.168.1.191
NETMASK=255.255.255.0
NETWORK=192.168.1.0
BROADCAST=192.168.1.255
NM_CONTROLLED="yes"
ONBOOT="yes"
TYPE="Ethernet"
sudo ifup eth1
在 CentOS1 上,使用 ssh 连接到此服务器:
sudo -u apache ssh [email protected]"pwd"
然后 apache 可以 ssh 到 192.168.1.191 并且你可以做任何你想做的事情:)
$ip_eth1= '192.168.1.191';
$port='22';
exec('ssh -p '.$port.' root@'.$ip_eth1.' "ip link set dev eth0 up";');
exec('ssh -p '.$port.' root@'.$ip_eth1.' "ip link set dev eth0 down";');