[ << ]
[ < ]
[ 主页 ]
[ > ]
[ >> ]
5. 附加功能
内容:
5.a. 标准函数钩子
你可以定义4个函数,它们将会在start/stop操作前后被调用。这些函数将会以接口名称作为参数被调用,以便于一个函数可以控制多个适配器。
preup()和predown()函数的返回值必须为0(成功),这意味着可以使一个网络接口进入配置状态或退出配置状态。如果preup()返回一个非0值,则网络接口配置过程将被中止。如果predown()返回一个非0值,则停止该网络接口运行的操作将被终止。
postup()和postdown()函数的返回值会被忽略,因为就算它们返回失败,系统也没有什么可以做的。
${IFACE}表示要打开/关闭的接口。${IFVAR}是${IFACE}转化而来的bash允许的变量名。
代码 1.1: pre/post up/down函数范例 |
preup() {
if ethtool ${IFACE} | grep -q 'Link detected: no'; then
ewarn "No link on ${IFACE}, aborting configuration"
return 1
fi
return 0
}
predown() {
if is_net_fs /; then
eerror "root filesystem is network mounted -- can't stop ${IFACE}"
return 1
fi
return 0
}
postup() {
return 0
}
postdown() {
return 0
}
|
5.b. 无线工具函数钩子
注意:
此功能不适用于WPA Supplicant──但是${ESSID}和${ESSIDVAR}变量在postup()函数中是可用的。
|
你可以定义2个函数,它们将会在执行相关的操作前后被调用。这些函数将会以接口名称作为参数被调用,以便于一个函数可以控制多个适配器。
preassociate()函数的返回值应该为0(成功),这意味着一个网络接口的配置或取消配置过程可以继续。如果preassociate()返回一个非0值,则网络接口的配置过程将被中止。
postassociate()函数的返回值是被忽略的,因为就算它们返回失败,系统也没有什么可以做的。
${ESSID}被设置为你所连接到的AP的ESSID。${ESSIDVAR}是${ESSID}转化而来的bash允许的变量名。
代码 2.1: pre/post association functions |
preassociate() {
local user pass
eval user=\"\$\{leap_user_${ESSIDVAR}\}\"
eval pass=\"\$\{leap_pass_${ESSIDVAR}\}\"
if [[ -n ${user} && -n ${pass} ]]; then
if [[ ! -x /opt/cisco/bin/leapscript ]]; then
eend "For LEAP support, please emerge net-misc/cisco-aironet-client-utils"
return 1
fi
einfo "Waiting for LEAP Authentication on \"${ESSID//\\\\//}\""
if /opt/cisco/bin/leapscript ${user} ${pass} | grep -q 'Login incorrect'; then
ewarn "Login Failed for ${user}"
return 1
fi
fi
return 0
}
postassociate() {
return 0
}
|
注意:
${ESSID}和${ESSIDVAR}在predown()和postdown()函数中不可用。
|
[ << ]
[ < ]
[ 主页 ]
[ > ]
[ >> ]
本文档的内容遵循知识共享-署名-相同方式共享许可协议
|