wifislax ~ # mac_ap="76:BA:DB:12:37:55"
wifislax ~ # a=`sudo iwlist wlan0 scan | egrep -i 'ESSID|Address:|Channel:'`
wifislax ~ # echo "$a"
Cell 01 - Address: 76:BA:DB:12:37:55
Channel:6
ESSID:"BLU DASH MUSIC JR"
Cell 02 - Address: 3A:2D:D1:FE:99:97
Channel:1
ESSID:"DIRECT-Ns-1xAAAAbGlzYW5kcml0YTIx"
wifislax ~ #
a=$(cat text)
mac="76:BA:DB:12:37:5"
info=$(echo $a | awk -v adrs=$mac '{
for(i=1;i<=NF;i++) {
if (index($i, adrs)) {
a=i+1
while(1) {
if (index($a, "Cell")) {
break
}
print $a
a++
}
}
}
}')
canal=$(echo $info | grep -oP 'Channel:\K[0-9]+')
nombre=$(echo $info | grep -oP '\"\K[A-Za-z\s]+')
echo $canal
echo $nombre
6
BLU DASH MUSIC JR
#!/bin/bash
#Direccion MAC que vamos a monitorear
mac_ap="76:BA:DB:12:37:55"
#Escanemos las redes y almecenamos en la variable "$a"
a=`sudo iwlist wlan0 scan | egrep -i 'ESSID|Address:|Channel:'`
#echo "$a"
#Esto es un ejemplo del contenido de la variable $a
#a=' Cell 01 - Address: 76:BA:DB:12:37:00
# Channel:5
# ESSID:"BLU DASH MUSIC JR"
# Cell 02 - Address: 76:BA:DB:12:37:55
# Channel:65
# ESSID:"BLU DASH MUSIC JR"'
#-----------------------OBTENEMOS LOS DATOS----------------------------------------
#Guardamos la variable $a en un archivo para procesarla
echo "$a" > 'tmp.txt'
i=1
while read line #Leemos el archivo linea a linea
do
tmp_line="$line"
#echo $i "$tmp_line"
#Comprobamos si $mac_ap existe en la linea actual
if [[ "$tmp_line" == *"$mac_ap"* ]]
then
#Si la mac se encuentra en la linea actual...
#echo "La MAC se encuentra en la linea $i";
#Extraemos el canal de la proxima linea
canal=$(head -$((i+1)) 'tmp.txt' | tail -1 | grep -oP 'Channel:\K[0-9]+')
#Salimos del ciclo
break
fi
i=$((i+1))
done < 'tmp.txt'
#----------------------------------------------
#Imprimimos los datos obtenidos
echo "MAC: $mac_ap Canal: $canal"
#FIN
#!/bin/sh
MAC_AP="76:BA:DB:12:37:55"
FOUND=0
CHANNEL=""
sudo iwlist wlan0 scan | egrep -i 'ESSID|Address:|Channel:' | while read LINE
do
if [[ "$LINE" == ".*Address: $MAC_AP" ]]
then
FOUND=1
else if [[ "$LINE" == ".*Channel:.*" && $FOUND ]]
then
CHANNEL=$(expr "$LINE" : '.*Channel:\(.*\)')
break;
fi
done
echo $MAC_AP : $CHANNEL
if [[ "$LINE" == ".*Address: $MAC_AP" ]]
then
FOUND=1
else if [[ "$LINE" == ".*Channel:.*" && $FOUND ]]
then
CHANNEL=$(expr "$LINE" : '.*Channel:\(.*\)')
break;
fi
fi #Este faltaba
#!/bin/sh
MAC_AP="76:BA:DB:12:37:55"
FOUND=0
CHAN=9999
#sudo iwlist wlan0 scan | egrep -i 'ESSID|Address:|Channel:' | while read LINE
sudo cat /tmp/test.txt | egrep -i 'ESSID|Address:|Channel:' | while read LINE
do
if [[ "$LINE" == *Address:\ $MAC_AP ]]
then
FOUND=1
elif [[ "$LINE" == *Channel:* ]]
then
CHAN=$(expr "$LINE" : '.*Channel:\(.*\)')
echo $MAC_AP : $CHAN
break
fi
done
#!/bin/sh
MAC_AP="76:BA:DB:12:37:55"
FOUND=0
CHANNEL=0
#sudo iwlist wlan0 scan | egrep -i 'ESSID|Address:|Channel:' > /tmp/test.txt
read IGNORE CHANNEL <<< $(
egrep -i 'ESSID|Address:|Channel:' /tmp/test.txt | while read LINE
do
if [[ "$LINE" == *Address:\ $MAC_AP ]]
then
FOUND=1
elif [[ "$LINE" == *Channel:* ]]
then
CHAN=$(expr "$LINE" : '.*Channel:\(.*\)')
echo $MAC_AP $CHAN
break
fi
done
)
echo "Canal $CHANNEL para MAC $MAC_AP"
a="Cell 01 - Address: 76:BA:DB:12:37:55
Channel:6
ESSID:\"BLU DASH MUSIC JR\"
Cell 02 - Address: 3A:2D:D1:FE:99:97
Channel:1
ESSID:\"DIRECT-Ns-1xAAAAbGlzYW5kcml0YTIx\"";
IFS=$'\n';
array=($a);
mac="76:BA:DB:12:37:55";
found=0
info=""
for item in ${array[@]}
do
if [[ "$item" == *"$mac"* ]]
then
found=1
elif [ "$found" -eq "1" ]
then
if [[ "$item" == *"Cell"* ]]
then
break;
fi
info="$info""$item";
fi
done
canal=$(echo $info | grep -oP 'Channel:\K[0-9]+')
essid=$(echo $info | grep -oP '\"\K[A-Za-z\s]+')
echo "MAC - $mac | CANAL - $canal | ESSID - '$essid'";
#!/bin/sh
mac_ap="76:BA:DB:12:37:55"
retardo=5 #Esta variable contendra el tiempo entre cada escaneo. No lo he puesto pero al final va.
FOUND=0
#Este archivo contendra el canal.
#Lo creo ahora porque si no da un error cuando se intenta leer y no existe.
echo "0" > 'tmp_canal.txt'
#Cilco que marca el ritmo de escaneo
nada=0
echo "CONTROl-C para terminar"
while [ $nada ]
do
i=1
sudo iwlist wlan0 scan | egrep -i 'ESSID|Address:|Channel:' | while read linea
do
#echo $linea
if [[ "$linea" == *"Address: $mac_ap"* ]]
then
#echo "Encontrado en la linea $i"
FOUND=1
else if [[ "$linea" == *"Channel:"* && $FOUND == 1 ]]
then
#echo "Encontrado CANAL en la linea $i"
#echo ${linea#*'Channel:'}
canal=$(echo `expr "$linea" : 'Channel:.*\([0-9]\)'`)
#echo "Canal: $canal"
canal_viejo=`cat tmp_canal.txt`
#Comprobamos si el canal actual es diferente que el canal_viejo, para ejecutar las acciones necesarias.
if [[ "$canal_viejo" != *"$canal"* ]]
then
echo "Canal detectado: $canal. Ejecutando acciones..."
echo "$canal" > 'tmp_canal.txt' # Guardamos el canal actual en el archivo
# ---------- AQUI LAS ACCIONES A EJECUTAR CUANDO CAMBIA DE CANAL ----------
#---------------------------------------------------------------------------------------------------------------------------
fi
break
fi
fi
i=$((i+1))
done
#Al precionar Ctnrol-C Paramos el escaneo
trap "break" SIGINT SIGTERM
done #Fin del ciclo de escaneo
clear
echo "TERMINADO"