Debido a los problemas que se producen con determinadas tarjetas de red al desmontar y volver a montar el driver, he investigado y encontrado la forma de hacer lo mismo de una forma menos agresiva.
Ahora el script en vez de desmontar el driver, lo desvincula del dispositivo en cuestión, y vuelve a vincularlo, de esta forma conseguimos el mismo resultado ("limpiar" la interfaz) sin los efectos secundarios que causaba la versión anterior.
#!/bin/bash
# Script: reset_iface v2
# Por geminis_demon para Wifislax - SeguridadWireless.Net
Error() {
echo " - ERROR: $1"
exit 1
}
if [ -z "$1" -o "$1" = "-h" ]; then
echo
echo "Este script desmonta y vuelve a montar el driver de una interfaz de red"
echo
echo "EJEMPLO:"
echo " $0 wlan0"
echo
echo "OPCIONES:"
echo " -h Muestra esta ayuda."
echo
if [ -z "$1" ]; then
exit 1
else
exit 0
fi
fi
[ $(id -u) != 0 ] && Error "Este script debe ejecutarse con permisos de ROOT"
[ ! -d "/sys/class/net/$1/device/driver" ] && Error "No existe la interfaz $1"
ID="$(basename "$(ls -l "/sys/class/net/$1/device")")"
OLD_DIR="$(pwd)"
cd "/sys/class/net/$1/device/driver/"
echo -n "$ID" >unbind||Error "Ocurrió un problema al desmontar la interfaz $1"
echo -n "$ID" >bind||Error "Ocurrió un problema al montar la interfaz $1"
echo " - La interfaz $1 ha sido reiniciada"
cd "$OLD_DIR"