Usted no necesita tubo a grep
y, a continuación, a awk
en la primera línea como awk
puede hacer lo que sea necesario por sí mismo. También la forma de tener la primera línea escrita, lo que falta es la $(...)
alrededor de los comandos.
En la segunda línea que se está perdiendo el separador de campo en la awk
comando, que en un .csv
archivo, normalmente es una coma. Por lo que añadió que a la awk
comando.
El uso de las dos líneas siguientes:
myBSSID="$(/System/Library/PrivateFrameworks/Apple80211.framework/Versions/A/Resources/airport -I | awk '/BSSID/{print $2}')"
awk -F ',' -v theBSSID="$myBSSID" '$1 == theBSSID {print $2}' "$HOME/Desktop/APtable.csv"
Me di cuenta de la salida de la airport
comando no informe de la BSSID
correctamente ya que si se deja fuera algunos ceros.
Si ese es el caso en el sistema y el .cvs
archivo tiene información adecuada, a continuación, intente lo siguiente:
myBSSID="$(system_profiler SPAirPortDataType | awk '/BSSID/{print $2}')"
awk -F ',' -v theBSSID="$myBSSID" '$1 == theBSSID {print $2}' "$HOME/Desktop/APtable.csv"
Tenga en cuenta que system_profiler SPAirPortDataType
no es tan rápido como el uso de airport
, pero si la salida de airport
está cayendo algunos de los ceros, entonces usted necesitará una alternativa si la BSSID
's de la .cvs
archivo tiene todos los 12 caracteres, sin contar los dos puntos que deberían.
El siguiente podría ser utilizado para incorporar ambos métodos en un bash
script para sólo utilizar el segundo método si la longitud de myBSSID
, es menor de 17 caracteres, como 17 es la longitud correcta.
#!/bin/bash
myBSSID="$(/S*/L*/P*/A*/V*/A/R*/airport -I | awk '/BSSID/{print $2}')"
l="${#myBSSID}"
if [[ $l -lt 17 ]]; then
myBSSID="$(system_profiler SPAirPortDataType | awk '/BSSID/{print $2}')"
fi
awk -F ',' -v theBSSID="$myBSSID" '$1 == theBSSID {print $2}' "$HOME/Desktop/APtable.csv"