Use 'nmcli' to determine if NetworkManager switched adapter to unmanaged

Fix #29
This commit is contained in:
oblique 2014-07-28 19:24:02 +03:00
parent 709652041f
commit ed7d3f36f9

View File

@ -80,8 +80,18 @@ get_new_macaddr() {
ADDED_UNMANAGED=0 ADDED_UNMANAGED=0
NETWORKMANAGER_CONF=/etc/NetworkManager/NetworkManager.conf NETWORKMANAGER_CONF=/etc/NetworkManager/NetworkManager.conf
networkmanager_is_running() {
which nmcli > /dev/null 2>&1 || return 1
nmcli nm | grep -E '^running' > /dev/null 2>&1
}
networkmanager_iface_is_unmanaged() {
nmcli dev status | grep -E "$1.+unmanaged" > /dev/null 2>&1
}
networkmanager_add_unmanaged() { networkmanager_add_unmanaged() {
[[ ! -d ${NETWORKMANAGER_CONF%/*} ]] && return networkmanager_is_running || return
[[ -d ${NETWORKMANAGER_CONF%/*} ]] || mkdir -p ${NETWORKMANAGER_CONF%/*}
[[ -f ${NETWORKMANAGER_CONF} ]] || touch ${NETWORKMANAGER_CONF} [[ -f ${NETWORKMANAGER_CONF} ]] || touch ${NETWORKMANAGER_CONF}
if [[ -z "$2" ]]; then if [[ -z "$2" ]]; then
MAC=$(get_macaddr "$1") MAC=$(get_macaddr "$1")
@ -99,7 +109,10 @@ networkmanager_add_unmanaged() {
sed -e "s/^${UNMANAGED}/${NEW_UNMANAGED}/" -i ${NETWORKMANAGER_CONF} sed -e "s/^${UNMANAGED}/${NEW_UNMANAGED}/" -i ${NETWORKMANAGER_CONF}
fi fi
ADDED_UNMANAGED=1 ADDED_UNMANAGED=1
sleep 2 while ! networkmanager_iface_is_unmanaged "$1"; do
sleep 1
done
sleep 1
echo "DONE" echo "DONE"
} }
@ -118,7 +131,10 @@ networkmanager_rm_unmanaged() {
NEW_UNMANAGED=$(echo ${UNMANAGED} | sed -e "s/;mac:${MAC}//") NEW_UNMANAGED=$(echo ${UNMANAGED} | sed -e "s/;mac:${MAC}//")
sed -e "s/^${UNMANAGED}/${NEW_UNMANAGED}/" -i ${NETWORKMANAGER_CONF} sed -e "s/^${UNMANAGED}/${NEW_UNMANAGED}/" -i ${NETWORKMANAGER_CONF}
fi fi
sleep 2 while networkmanager_iface_is_unmanaged "$1"; do
sleep 1
done
sleep 1
} }
CHANNEL=1 CHANNEL=1