Перезапуск служб, при изменении состояния сетевых интерфейсов
vayw 9 октября, 2013 - 00:57
Привет,
Ситуация следующая:
- есть 2 сетевых интерфейсов;
- есть dhcpd\sshd;
службы должны работать на обоих интерфейсах, но возможно ситуация, что один из интерфейсов может быть без сетевого адреса или не активным по какой-либо иной причине. В связи с чем в rc.conf:
rc_depend_strict="NO"
и служба запуститься, как и должно быть, даже если запуститься хотя бы один интерфейс.
Вопрос:
Есть ли родной способ автоматического перезапуска службы при запуске не работавшего до этого сетевого интерфейса?
PS: я честно изучал руководство openrc, но не нашёл подобной возможности..
стоит городить костыль, или я таки плохо искал?
»
- Для комментирования войдите или зарегистрируйтесь
Может вам нужно postup() и
Может вам нужно postup() и postdown()?
Например вот так:
Смотреть /usr/share/doc/openrc-версия/net.example.bz2, там это раписано
ReinForce написал(а): Может
Муть ^^
rc_depend_* rc_need_ rc_after , вобщем ман .
Compute:
Bosch M2.8.1 -> custom Bosch M2.8.3 clone from Russia.
Speed about 260 km,Ram 2 pers.,HDD - 70 kg,210 FLOPS ;)
я поступил врварски, пошел в
я поступил врварски, пошел в /etc/init.d/sshd
и сделал чтоб выглядело так:
Теперь не страшно если лежит один из интерфейсов, или вовсе все.. (если ssh вешается на 0.0.0.0)
с dhcpd тоже смое. все как часики работает)
теперь купи вазелин и спили
теперь купи вазелин и спили мушку.
событие наступит в течении 1 года
Compute:
Bosch M2.8.1 -> custom Bosch M2.8.3 clone from Russia.
Speed about 260 km,Ram 2 pers.,HDD - 70 kg,210 FLOPS ;)
Tamahome написал(а): Теперь
rc_depend_strict="NO" && rc_provide="net" в /etc/rc.conf
P.S. Господи, а я думал только я изобретаю феерические костыли, когда не читаю маны. А оказывается не только, ох, не только...
Нейтральность - высшее достижение сознания!
Так, погодите. Я думал и про
Так, погодите. Я думал и про postup()\postdown() и держу их в голове.
Для начала хотел выяснить, можно ли это решить с помощью openrc.
Уважаемый slepnoga, согласно этому руководству:
предположим, что есть служба test
"use foo" - запустит test после foo, при наличии оной. При отсутствии foo, test просто запустится. В том случае, если foo есть, но что-то препятствует её запуску, то test так же нормально стартует. Если foo запустится после test, то test не узнает об этом, и не будет использовать foo.
или я не прав?
rc_after не подходит же.
У меня тоже не страшно, если лежит один из интерфейсов ( это просто можно сделать через rc.conf ), но ситуация немного иная:
допустим, есть два интерфейса:
1-й настраивается статически, 2-й - dhcp
необходим доступ по ssh через оба интерфейса. С 1-м проблем нет, он всегда включается. Второй же, при проблеме с dhcp сервером (за который я не отвечаю), может быть неактивным. Сейчас зависимость ssh от net.* не строгая, и на первом всегда есть доступ, но если 2-й начнёт работать после запуска sshd, то на нём sshd слушать не будет.
как в принципе решит эту проблему, я представляю. Но может есть стандартное средство.
Как вы считаете, должен ли openrc предоставлять такой функционал?
Всё что вам надо УЖЕ есть в
Всё что вам надо УЖЕ есть в openrc. Вы можете как угодно кастомизировать зависимости. Реально работающий у меня пример:
За подробностями прошу в ман.
Нейтральность - высшее достижение сознания!
Спасибо, это всё прекрасно, и
Спасибо, это всё прекрасно, и у меня всё хорошо с зависимостями. Но, ещё раз, приведу конкретику:
есть eth0 и eth1, один из которых может при загрузке сервера не получить адрес.
sshd должен работать всегда, на всех доступных интерфейсах. Если при запуске сервера eth0 не получил адрес, sshd запускается на всех остальных работающих интерфейсах (скажем eth1, lo). Через какое-то время eth0 получает адрес, но sshd уже не будет слушать на этом адресе, пока не будет перезапущен. Вот только это проверил. Говорю именно об этом.
Я не исключаю, что могу быть слеп, но, честно, читал руководство на эту тему не единожды.