如何“重新启动” RHEL上的特定网络接口?


18

在RHEL中,我不使用service network restart命令,而是如何使用一个命令重新启动特定的网络接口,让我们说“ eth1”。

“只有一个命令”,因为这也是我ssh正在处理的唯一界面。因此,如果我要使用:ifdown然后ifup,我将永远无法执行ifup命令,因为我sshifdown eth1命令后被终止一次。

因此,应该有一个命令可以让我完全关闭然后打开服务于我当前ssh连接的接口。因此,我不必担心完全丢失到服务器的连接。

有什么想法吗?

Answers:


27

您可以使用:

ifdown eth1 && ifup eth1

作为一个命令。&&仅运行一个命令,如果第一个命令成功,则运行另一个命令。如果需要使用sudo,请确保在每个命令之前都使用它:

sudo ifdown eth1 && sudo ifup eth1

只要将接口配置为具有必要的IP和路由以匹配当前配置,您的ssh连接就不会断开。

如果您担心没有其他访问方法在生产服务器上使用它,那是可以理解的。尽管该命令完全可以满足您的要求,但是很容易出现配置错误,只有在运行该命令后才会注意到该错误。如果您没有其他访问方法(例如,带外控制台或在其他接口上运行的SSHD),则最安全的做法是不这样做

我经常使用此技术来执行接口的“重启”,但是通常我有一种备用的访问方法,以防万一。


加上OOB管理的FTW
dmourati

3
我可能建议ifdown eth1 && ifup eth1,除非ifdown成功,否则ifup不会运行,而;ifup将运行,而不管ifdown如何返回。
zamnuts 2015年

@zamnuts答案现在已编辑为包括此内容:)
David Gardner

1

您可以通过发出以下命令来“重启”一个接口:

# ifdown eth1
# ifup eth1

之后,您可以验证新配置是否处于活动状态

# ip a

抱歉,但是我需要..“仅一个命令”,因为那是我的ssh也在处理的唯一接口。因此,如果我要使用:ifdown然后ifup,我将永远无法执行ifup命令,因为在ifdown eth1命令之后,我的ssh已终止一次。因此,应该只有一个命令,我可以关闭该命令,然后调出服务于当前ssh连接的接口。因此,我不必担心失去与服务器的连接。
夏期剧场

您可以使它们成为shell脚本并运行该脚本,即使网络短暂中断,您的ssh-session也不应终止。另一个选择是在screen-session内运行该脚本,即使ssh-session失败,该脚本也会执行到最后。
jerQ

1
这会有所帮助吗?ifdown eth1 ; ifup eth1
夏期剧场

0

您是否要更改远程计算机上接口的IP地址(或与此相关的任何接口参数)?如果答案是肯定的,那么您可以尝试以下方法之一:

一种很酷的方法是使用screen实用工具通过仅键入“ screen”来创建会话。重新启动网络服务后,SSH连接断开,请使用屏幕-ls检查会话仍处于活动状态(但已分离),并使用屏幕-r恢复已分离的会话。万一您的接口配置文件中没有错误,即网络服务成功重启,这将起作用。

您还可以使用以下技巧:

$ cp -v current_conf_file current_conf_file.bak
$ echo "mv current_conf_file.bak current_conf_file && service network restart" | at now+10min

然后继续编辑您的接口配置文件并重新启动网络服务。如果发生错误,您只需等待10分钟,即可重新应用以前的配置并重新启动网络服务。


-3

关于ifup和ifdown的所有答案均与问题无关。ifup和ifdown仅会使接口向上和向下,不会影响网络服务。对于linux网络服务,并不意味着仅接口ip安装。

请检查/etc/rc.d/network脚本以获取更多详细信息。


1
我不确定你在说什么。OP不会询问重新启动网络服务,而只询问重新启动单个接口。此外,OP接受了明确使用您建议使用的命令的答案。从我-1。
MadHatter在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.