как извлечь данные MAC из grep и вставить в удар

Я пытаюсь извлечь MAC-адрес для беспроводной карты, затем вставляют его в сценарий удара как переменная VAR с возрастающим изменением. Так..

$ ifconfig wlan1 | grep HWaddr
wlan1     Link encap:Ethernet  HWaddr XX:xx:XX:xx:XX:xx

Теперь я должен к командной строке извлечь просто XX:xx:XX:xx:XX:xx и добавить его к сценарию с +1 VAR. Который кажется довольно прямым, если я могу извлечь просто XX:xx:XX:xx:XX:xx из grep выше. (т.е. Как увеличить переменную в ударе?)

Кто-либо может видеть контрольно-пропускной пункт к добавлению MAC-адреса как переменная в сценарии удара? т.е. без удара, думая MAC является строковым вычислением или ошибочной командой?

0
задан 13 April 2017 в 15:24

3 ответа

Может быть легче считать MAC из соответствующего файла в sys файловая система. Если Вы называете свою переменную mymac, то:

$ mymac=$(cat /sys/class/net/wlan1/address)

Должен работать

$ echo "mymac"
XX:xx:XX:xx:XX:xx

, было бы возможно увеличить значение последних цифр с небольшим количеством переменного управления. Это будет только работать, если они будут оба цифрами со значением 98 или меньше. следующий пример использует принятый MAC 52:1c:53:8b:8f:77.

$ endpair=${mymac##*:}
$ ((endpair++))
$ newmac="${mymac%:*}:${endpair}"
$ echo "Hooray $mymac is now $newmac"
Hooray 52:1c:53:8b:8f:77 is now 52:1c:53:8b:8f:78
2
ответ дан 28 September 2019 в 01:33

Этот пост о переполнении стека предоставляет переносимое решение (оно будет работать на Unix, в основном, не только на Ubuntu), и должно обеспечивать отказоустойчивость, если формат вывода ifconfig изменяется ( или если он устарел / удален , и вы решили переключиться на другой инструмент).

ifconfig wlan1 | grep -o -E '([[:xdigit:]]{1,2}:){5}[[:xdigit:]]{1,2}'
1
ответ дан 28 September 2019 в 01:33

Вам нужно добавить больше команд для извлечения только MAC-адреса.

Я предлагаю вам использовать awk и печатать только последний столбец, пример:

ifconfig wlan1 | grep HWaddr | awk '{ print $5 }'

Эта команда будет отображать только XX: xx: XX: xx: XX: xx, awk печатать разделенные строки по $ 5 пробелами .

Если вы хотите добавить этот результат в переменную bash, вам нужно применить эту команду:

myVarName=$(ifconfig wlan1 | grep HWaddr | awk '{ print $5 }')

Затем вы используете этот контент с $ myVarName.

echo $myVarName
XX:xx:XX:xx:XX:xx
0
ответ дан 28 September 2019 в 01:33

Другие вопросы по тегам:

Похожие вопросы: