Как «перезапустить» определенный сетевой интерфейс на RHEL?

18

В RHEL вместо использования service network restartкоманды, как я могу перезапустить определенный сетевой интерфейс, скажем, «eth1», только с одной командой.

«Только одна команда», потому что это единственный интерфейс, над которым sshработает my . Так что, если я собираюсь использовать: ifdownи тогда ifupя никогда не смогу нажать на ifupкоманду, так как моя sshбыла прервана один раз после ifdown eth1команды.

Таким образом, должна быть одна команда, которая позволяет мне полностью отключить и затем вызвать интерфейс, который обслуживает мое текущее sshсоединение. Поэтому мне не нужно беспокоиться о потере связи с моим сервером.

Любая идея, пожалуйста?

夏 期 劇場
источник

Ответы:

27

Ты можешь использовать:

ifdown eth1 && ifup eth1

Как одна команда. && просто запускает одну команду, а затем другую, если первая команда выполнена успешно . Если вам необходимо использовать sudo, убедитесь, что вы используете его перед каждой командой:

sudo ifdown eth1 && sudo ifup eth1

Пока ваш интерфейс настроен на наличие необходимого IP-адреса и маршрута в соответствии с текущей конфигурацией, ваше ssh-соединение не будет разорвано.

Если вы беспокоитесь об использовании его на рабочем сервере, к которому у вас нет другого способа доступа, это понятно. Хотя команда делает именно то, что вы хотите, очень легко иметь ошибку конфигурации, которая заметна только после выполнения этой команды. Если у вас нет альтернативного метода доступа (например, внеполосной консоли или SSHD, работающего на другом интерфейсе), лучше не делать этого .

Я часто использую эту технику для «перезагрузки» интерфейса, но у меня обычно есть доступный метод резервного копирования на случай, если я это сделаю.

blahnana
источник
Это плюс OOB управление FTW
dmourati
3
Могу предположить ifdown eth1 && ifup eth1, что таким образом ifup не запускается, если ifdown не был успешным, тогда как с ;ifup будет запускаться независимо от того, как возвращался ifdown.
Замнюц
@zamnuts Ответ теперь отредактирован, чтобы включить это :)
Дэвид Гарднер
1

Вы можете «перезапустить» один интерфейс, введя следующие команды:

# ifdown eth1
# ifup eth1

После этого вы можете убедиться, что ваша новая конфигурация активна

# ip a
jerQ
источник
Извините, но мне нужно ... "Только одна команда", потому что это единственный интерфейс, над которым работает мой ssh. Поэтому, если я собираюсь использовать: ifdown, а затем ifup, я никогда не смогу выполнить команду ifup, так как мой ssh ​​был прерван один раз после команды ifdown eth1. Так что должна быть одна команда, которую я могу отключить, а затем вызвать интерфейс, который обслуживает мое текущее ssh-соединение. Поэтому мне не нужно беспокоиться о потере соединения с моим сервером.
夏 期 劇場
Вы можете сделать их сценарием оболочки и запустить его, ваша ssh-сессия не должна быть прервана, даже если произойдет короткое отключение сети. Другой вариант - запустить этот скрипт внутри экранной сессии, где он будет выполнен до конца, даже если ваша ssh-сессия завершится неудачно.
JerQ
1
это поможет? ifdown eth1 ; ifup eth1?
夏 期 劇場
0

Вы пытаетесь изменить IP-адрес (или любой другой параметр интерфейса) интерфейса на удаленном компьютере? Если ответ «да», вы можете попробовать одно из следующих:

Крутой способ - использовать утилиту screen для создания сеанса, просто набрав «screen». После того, как вы перезапустите сетевую службу и ваше SSH-соединение прекратится, используйте screen -ls, чтобы проверить, что сеанс все еще активен (но отключен), и screen -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 минут, чтобы повторно применить предыдущую конфигурацию и перезапустить сетевую службу.

IG83
источник
-3

все ответы, касающиеся ifup и ifdown, не соответствуют данному вопросу. ifup & ifdown просто переводят интерфейс вверх и вниз, это не влияет на сетевую службу. для сетевого сервиса linux не подразумевается только настройка ip интерфейсов.

пожалуйста, проверьте /etc/rc.d/network script для более подробной информации.

Стивен Лян
источник
1
Я не уверен, что вы делаете. OP не спрашивает о перезапуске сетевого сервиса , а только перезапускает индивидуальный интерфейс . Более того, OP принял ответ, который явно использует команды, против которых вы рекомендуете. -1 от меня.
MadHatter поддерживает Монику