我必须模拟拔掉的网线来testing我们公司正在开发的所有应用程序的问题。
我有一个虚拟的盒子上有大约6个虚拟机Cent-OS。
从一个PHP的网页,我不得不select一台服务器,并停止其networking,然后再次启动。 当然我使用SSH来远程连接到其他服务器。
我如果我停止在服务器上的eth0(主networking)。 我将无法再与ssh达成一致。 所以我不得不寻找另一种方式来执行此操作。
我在本教程的帮助下,通过virtualbox在服务器之间创build了另一个networking连接(仅主机),然后login到其中一台服务器,为这个新networkingconfigurationIP,使用以下两个命令:
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
答案如下:在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";');