続・起動時にlagg(4) を有効化するスクリプト
d:id:yaizawa:20121224 の続き。やっぱりlo*やgif*を除くとはいえ、問答無用で見つかったデバイスをlaggに突っ込むのも乱暴だし、汎用性が無いのもあんまり嬉しくないし、エラーハンドリングしてないのもキモいなと思いちょっと変更。
(スクリプト名をlagg_config.shとして) lagg_config.sh lagg0 failover 192.168.0.1/24 igb0 em0 bge0とかやると、igb0 → em0 → bge0の優先順位でlagg0をfailoverモードで構成する。見つからないNICは無視するので、たとえば再起動時にem0が見えなかった場合にはigb0とbge0だけでlagg0を構成しようとするので突如見えなくなることも無いハズ。あとifconfig lagg0 createもスクリプト内で実行するのでrc.confにcloned_interfacesも不要。コレでそれなりに使えるスクリプトになったハズ。
#!/bin/sh if [ $# \< 4 ]; then echo "Usage: ${0} DEVICE PROTOCOL IPv4ADDR IF1 IF2..." exit 1 fi LAGG_DEV=${1} LAGGPROTO=${2} IPv4ADDR=${3} /sbin/ifconfig ${LAGG_DEV} create > /dev/null 2>&1 if [ $? != 0 ]; then echo "cannot create ${LAGG_DEV}" exit 1 fi LAGGPORTS="" shift 3 while [ 0 \< $# ] do for IF in `/sbin/ifconfig -l`; do case ${IF} in ${1} ) echo "inferface ${1} found" /sbin/ifconfig ${1} up if [ 0 = $? ]; then LAGGPORTS="${LAGGPORTS} laggport ${IF}" else echo "cannot activate interface ${IF}" fi esac done shift done if [ -n "${LAGGPORTS}" ]; then /sbin/ifconfig ${LAGG_DEV} laggproto ${LAGGPROTO} ${LAGGPORTS} ${IPv4ADDR} if [ 0 = $? ]; then echo "interface ${LAGG_DEV} configured" else echo "interface ${LAGG_DEV} configure failed" exit 1 fi else echo "no interfaces found" exit 1 fi