Sistemas operativos > Aplicaciones y diccionarios linux

Script reset_iface (detecta y reinicia el driver de una interfce de red)

(1/2) > >>

geminis_demon:
Buenas.

Pues eso, este script detecta el driver de la interface que se le pase como parámetro, y lo reinicia (lo desmonta y lo vuelve a montar).

Esto es útil a la ora de realizar una auditoría, ya que al desmontar y volver a montar el driver te aseguras de que la interface está "limpia", no está siendo usada por ningún proceso y no está fijada a ningún canal.

La idea de hacer el script me vino al leer un comentario de Alister que decía que el hacía eso siempre antes de comenzar una auditoría, y me pareció buena idea  hacer un script que automatice el proceso >:D


--- Código: ---#!/bin/bash

# Script: reset_iface
# Por geminis_demon para Wifislax - SeguridadWireless.Net


if [ $(id -u) != 0 ]; then
echo "ERROR: Este script debe ejecutarse con permisos de ROOT"
exit 1
fi

if [ -z "$1" -o "$1" = "-h" ]; then
echo
echo "Este script desmonta y vuelve a montar el driver de una interface de red"
echo
echo "USO:"
echo " $0 interface"
echo
echo "OPCIONES:"
echo " -h  Muestra esta ayuda."
echo
if [ -z "$1" ]; then
exit 1
else
exit 0
fi
fi

IFACE="$1"

if [ ! "$(ip link|grep " $IFACE: ")" ]; then
echo
echo " - ERROR: No existe la interface \"$IFACE\""
echo
exit 1
fi

DRIVER="$(basename "$(ls -l "/sys/class/net/$IFACE/device/driver")")"

if [ ! "$DRIVER" ]; then
echo
echo " - ERROR: No ha sido posible encontrar el driver de $IFACE"
echo
exit 1
fi

echo
echo " - La interface $IFACE utiliza el driver $DRIVER"

rmmod -f "$DRIVER" && modprobe "$DRIVER"

if [ $? = 0 ]; then
echo " - El driver $DRIVER ha sido reiniciado"
echo
fi


--- Fin del código ---

geminis_demon:
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.


--- Código: ---#!/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"


--- Fin del código ---

USUARIONUEVO:
ok , a la noche lo actualizo.

najador:
gracias por tus aportes  ;D
para poder ejecutarlo  ¿como haceis?  yo copio lo expuesto reset_iface v2    y al final añado sh
le doy permisos con chmod y bien ;pero como lo ejecutais o como se llama a este script desde consola porque lo llamo de las maneras que conozco  y nada no aparece en consola  ???
y con clic derecho ejecutar en consola me sale
Advertencia: No fue posible iniciar «/root/Desktop/reset_ifacev2.sh» con los argumentos «/root/Desktop/reset_ifacev2.sh».   ???
 ¿hay alguien que me pueda decir como se llama a este script ?para poder ejecutarlo  ;he podido darle permisos con chmod pero no soy capaz de verlo en consola y ejecutarlo
saludos

geminis_demon:
Da igual el nombre o la extensión que le pongas, como si no le quieres poner extensión.

Se ejecuta igual que todos los scripts, abres una terminal y ejecutas:


--- Código: ---./ruta/del/script

--- Fin del código ---

o


--- Código: ---bash /ruta/del/script

--- Fin del código ---

o


--- Código: ---sh /ruta/del/script

--- Fin del código ---

Cualquiera de las 3 formas sirve.

Navegación

[0] Índice de Mensajes

[#] Página Siguiente

Ir a la versión completa