如何在不通过SSH重启的情况下成功重启网络?

在Ubuntu 14.04中既没有sudo service networking restart也没有sudo /etc/init.d/networking restart再做任何事情。 他们也都用代码1退出。有些东西明显改变了(或者一半改变了)但我找不到什么。 这显然会导致远程网络重新配置和Ansible等工具出现问题。

 $ sudo bash -x /usr/sbin/service networking restart [sudo] password for wirehive: ++ basename /usr/sbin/service + VERSION='service ver. 0.91-ubuntu1' ++ basename /usr/sbin/service + USAGE='Usage: service  | --status-all | [ service_name [ command | --full-restart ] ]' + SERVICE= + ACTION= + SERVICEDIR=/etc/init.d + OPTIONS= + '[' 2 -eq 0 ']' + cd / + '[' 2 -gt 0 ']' + case "${1}" in + '[' -z '' -a 2 -eq 1 -a networking = --status-all ']' + '[' 2 -eq 2 -a restart = --full-restart ']' + '[' -z '' ']' + SERVICE=networking + shift + '[' 1 -gt 0 ']' + case "${1}" in + '[' -z networking -a 1 -eq 1 -a restart = --status-all ']' + '[' 1 -eq 2 -a '' = --full-restart ']' + '[' -z networking ']' + '[' -z '' ']' + ACTION=restart + shift + '[' 0 -gt 0 ']' + '[' -r /etc/init/networking.conf ']' + which initctl + grep -q upstart + initctl version + case "${ACTION}" in + stop networking stop: Job failed while stopping + : + exec start networking start: Job is already running: networking 

在Ubuntu 14.04服务器远程重启网络的正确方法是什么?

原来这是一个“function”。 在Ubuntu Server中重新启动接口的唯一支持方式是sudo ifdown eth0 && sudo ifup eth0

https://bugs.launchpad.net/ubuntu/+source/ifupdown/+bug/1301015

ifdown,ifup对我不起作用(可能是第二个命令之前的SSH连接超时)。 工作是什么:

 sudo service network-manager restart 

这是在14.04 ubuntu桌面系统上。

改变的是他们不希望你再“反弹”网络。 停止,开始,仍然工作。 重启不再有效。 我只是“解决”了这个“问题”,也就是说我恢复了旧的行为。 要恢复到先前的行为:获取13.10 /etc/init/networking.conf文件并用它替换14.04文件。 (编辑:澄清哪些取代哪个)

过程如下:

 (Just before this, I configured my /etc/network/interfaces for eth1 on a 192.168.117.x address) "/etc/network/interfaces" 16L, 413C written root@1404-Anode:~# service networking restart stop: Job failed while stopping start: Job is already running: networking root@1404-Anode:~# echo "hmm, wth?" hmm, wth? root@1404-Anode:~# ifconfig eth0 Link encap:Ethernet HWaddr 00:0c:29:d6:a8:19 inet addr:192.168.115.105 Bcast:192.168.115.255 Mask:255.255.255.0 inet6 addr: 2002:4077:9050:1234:a08c:29c1:ce9b:a57b/64 Scope:Global inet6 addr: fe80::20c:29ff:fed6:a819/64 Scope:Link inet6 addr: 2002:4077:9050:1234:20c:29ff:fed6:a819/64 Scope:Global UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:646 errors:0 dropped:0 overruns:0 frame:0 TX packets:531 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:58748 (58.7 KB) TX bytes:75465 (75.4 KB) (lo removed here) root@1404-Anode:~# cd /etc/init root@1404-Anode:/etc/init# diff networking.conf.1310 networking.conf.1404 13c13 < and (stopped udevtrigger or container)) or runlevel [2345] --- > and (stopped udevtrigger or container)) or runlevel [2345] or stopped networking >RESULT=failed PROCESS=post-stop EXIT_STATUS=100 16a17,20 > if [ "$UPSTART_EVENTS" = "stopped" ] && [ "$UPSTART_JOB" = "networking" ] && [ "$EXIT_STATUS" = "100" ]; then > exit 0 > fi > 21a26,31 > if [ -z "$UPSTART_STOP_EVENTS" ]; then > echo "Stopping or restarting the networking job is not supported." > echo "Use ifdown & ifup to reconfigure desired interface." > exit 100 > fi root@1404-Anode:/etc/init# 

对/etc/init.d/networking脚本执行相同操作,这是/etc/init/networking.conf文件引用/调用的内容。

 root@1404-Anode:/etc/init# cp networking.conf.1310 networking.conf root@1404-Anode:/etc/init# cd ../init.d root@1404-Anode:/etc/init.d# diff networking.1404 networking.1310 15d14 < STATEDIR="$RUN_DIR/state" 21a21,27 > # Make sure that it's clear to the user that they shouldn't use this > # script under upstart > if init_is_upstart; then > echo "ERROR: Calling a sysvinit script on a system using upstart isn't supported. Please use the 'service' command instead." > exit 1 > fi > 52,54d57 < if ! chown root:netdev "$RUN_DIR" ; then < log_warning_msg "can't chown $RUN_DIR" < fi 160,162d162 < if init_is_upstart; then < exit 1 < fi 166c166 < state=$(ifquery --state) --- > state=$(cat /run/network/ifstate) root@1404-Anode:/etc/init.d# cp networking.1310 networking root@1404-Anode:/etc/init.d# service networking restart networking stop/waiting networking start/running root@1404-Anode:/etc/init.d# ifconfig eth0 Link encap:Ethernet HWaddr 00:0c:29:d6:a8:19 inet addr:192.168.115.105 Bcast:192.168.115.255 Mask:255.255.255.0 inet6 addr: 2002:4077:9050:1234:a08c:29c1:ce9b:a57b/64 Scope:Global inet6 addr: fe80::20c:29ff:fed6:a819/64 Scope:Link inet6 addr: 2002:4077:9050:1234:20c:29ff:fed6:a819/64 Scope:Global UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:3398 errors:0 dropped:0 overruns:0 frame:0 TX packets:2545 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:318654 (318.6 KB) TX bytes:418804 (418.8 KB) eth1 Link encap:Ethernet HWaddr 00:0c:29:d6:a8:23 inet addr:192.168.117.105 Bcast:192.168.117.255 Mask:255.255.255.0 inet6 addr: fe80::20c:29ff:fed6:a823/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:98 errors:0 dropped:58 overruns:0 frame:0 TX packets:15 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:20055 (20.0 KB) TX bytes:1226 (1.2 KB) (lo removed) root@1404-Anode:/etc/init.d# echo "hah, it works! *8^)" Hah, it works! *8^) root@1404-Anode:/etc/init.d# (note: the steps where I scp'd the 1310 versions into the 1404 system are omitted for brevity). 

显然他们有一个防守退出的原因,但他们并不打算真正输出正在发生的事情。

尝试时,条目会进入/var/log/upstart/networking.log,如下所示:

 Stopping or restarting the networking job is not supported. Use ifdown & ifup to reconfigure desired interface. 

但是,当您尝试重新启动服务网络时,它们确实可以/应该输出对话框消息。 呃,好吧。 想出来,甚至是一个老式的工作。

编辑:我发现这会导致无意触发由/etc/init/failsafe.conf控制的脚本,这是不可取的,因为它会在每次启动时导致120秒的超时延迟……以及可能掩盖实际的错误配置/网络这种延迟出现的问题表明,但它已经一直在显示。 (例如,未插入的电缆,允许访问映射在/ etc / fstab中的网络文件共享)

在任何情况下,我都会弄清楚是什么导致它总是达到超时,并在找到它时发布修复。

在参考kvm-user420的响应时,我已经开始设置一个脚本,将Ubuntu 14.04的网络脚本替换为Ubuntu 13.10的脚本。

你可以在这里找到它: https : //github.com/metral/restore_networking

请享用!

我解决了这个脚本的问题:请在“/etc/network/if-down.d”上添加此脚本

 cd /etc/network/if-down.d vim ifdown 

内容:

 #!/bin/bash for I in /sys/class/net/* do ifname=$(basename $I) if [ $ifname != "lo" ] ; then ip addr flush $ifname fi done 

最后:

 chmod +x ifdown 

现在您可以使用systemctl或service命令更改IP地址并重新启动网络服务。
注意 :此脚本太简单, 请勿处理 vm,tap,bridge,…接口。 实际上刷新所有接口排除lo(loopback)。