Pull to refresh

interface post-up в CentOS

Reading time2 min
Views7.3K
Полдня промучался на тему того, как заствить CentOS выполнить некий скрипт после поднятия интерфейса. После первого неудачного гугления появления первых трудностей заставил себя, однако, не действовать по принципу «Лучше грязный хак, чем долгий гемор»: удержался от втыкания костыля в /etc/sysconfig/network-scripts/ifup-eth
Дабы и коллег удержать от подобного пишу сюда результат своих изысканий.

1. В чистом виде аналог дебиановского post-up в CentOS отсутствуют. Не надо даже пытаться его искать.
2. Все, что есть, это некая фича описанная в Red Hat Knowledgebase DOC-8695

Если вкрадце: предлагается создать некий /sbin/ifup-local. В который затем поместить свой полезный (или бесполезный) код. Например:
#Set the MTU for eth0 only using the ip command
if [ "$1" = "eth0" ]; then
exec /sbin/ip link set dev ${1} mtu 1200
fi

Но это не наш метод. Хранить что-то относящееся к конфигурации в /sbin/ считаю неочевидным, и даже преступным по отношению к другим админам. Которым, возможно, придется работать с этой системой в будущем.

3. Описанных в статье Настройка сети в Linux через конфиг-файлы, ч.1 каталогов ifup.d и ifdown.d просто не нашлось. О них нет даже упоминания /etc/sysconfig/network-scripts/*

Исходя из 1,2,3 единственным правильным решением считаю размешение в /sbin/ скрипта ifup-local следующего содержания:
#!/bin/bash

POSTUPNAME="/etc/sysconfig/network-scripts/post-up-$1"
if [ -x $POSTUPNAME ]; then
exec $POSTUPNAME
fi


Соответственно, в /etc/sysconfig/network-scripts/ после этого помещаются файлы post-up-eth0 и т.д. с полезным кодом внутри.

И напоследок, аналогично дело обстоит и с запуском кода перед поднятием интерфейса (/sbin/ifup-pre-local), перед его отключением (/sbin/ifdown-pre-local) и после его отключения (/sbin/ifdown-local).

PS Работа велась на CentOS release 5.4 (Final). Ни одного сервера в результате вскрытия не пострадало.
Tags:
Hubs:
0
Comments11

Articles