Различия

Здесь показаны различия между двумя версиями данной страницы.

Ссылка на это сравнение

poluchenie_proizvoditelja_po_mac-adresu [2013/10/23 15:15] (текущий)
Строка 1: Строка 1:
 +====== Получение производителя по MAC-адресу устройства ======
 +Тут у нас скрипт,​ который ищет производителя устройства по его MAC. Причем скрипт сам обновляет реестр mac-адресов и производителей
  
 +Формат вызова
 +<code bash>​./​mac_search.sh [<​option>​] "​Кусок MAC'​a"</​code>​
 +Где в качестве опций можно использовать следующие параметры:​
 +  * **-u** - Используется для обновления базы данных,​ в противном случае база загружается только ​ в том случае,​ если файла oui.txt нет
 +  * **-s** - Подавлять весь вывод, кроме названия вендора
 +
 +<file bash mac-serch.sh>​
 +#!/bin/sh
 +#get vendor from mac-address
 +if [ -z "​$1"​ ]; then
 +        echo "no args specified, exiting! Use $0 [-option] mac"
 +        echo "where [-option] can be -u (update databse and exit) or -s (silent mode, just show vendor)"​
 +        exit 1 
 +fi
 +#don't forget that Zabbix don't set $PATH when running scripts
 +filename=/​usr/​share/​zabbix/​scripts/​oui.txt
 +tmpfile=/​tmp/​oui.txt
 +link=http://​standards.ieee.org/​develop/​regauth/​oui/​oui.txt
 +sed=/​bin/​sed
 +awk=/​bin/​awk
 + 
 +case $1 in
 +        -s)
 +                silent=1
 +                mac=$2
 +                if [ -z "​$2"​ ]; then
 +                        echo "no mac specified, exiting!"​
 +                        exit 1
 +                fi
 +                ;;
 +        -u)
 +                wget $link -O $tmpfile
 +                if [ $? -gt 0 ]; then 
 +                        echo "​download error, exiting"​
 +                        exit 1
 +                else 
 +                        echo "​Download ok!"
 +                        echo "​Moving $tmpfile to $filename..."​
 +                        mv -f $tmpfile $filename
 +                        if [ $? -gt 0 ]; then
 +                                echo "​Error!"​
 +                        else
 +                                echo "​Success!"​
 +                        fi
 +                        exit 0
 +                fi
 +                ;;
 +        *)        ​
 +                mac=$1
 +                ;;
 +        esac
 +if [ ! -f $filename ]; then 
 +        if [ -z $silent ]; then
 +                echo "no mac list file, dowload it? [y/n]"
 +        else
 +                exit 1
 +        fi
 +        while :
 +        do 
 +                read INPUT_STRING
 +                case $INPUT_STRING in
 +                y)
 +                        echo "​Trying to download from $link"
 +                        wget $link -O $filename
 +                        if [ $? -gt 0 ]; then 
 +                                echo "​download error, exiting"​
 +                                exit 1
 +                        else 
 +                                echo "​Download ok!"
 +                        fi
 +                        break
 +                        ;;
 +                n)
 +                        echo "​exiting!"​
 +                        exit 0
 +                        ;;
 +                *)
 +                        echo "wrong input, use [y/n]"
 +                        ;;
 +                esac
 +        done
 +fi
 +if [ ${#mac} -lt 8 ]; then
 +        mac=`echo "​$mac"​ | $sed '​s/​^\(..\)\(..\)\(..\)/​\1-\2-\3/'​ `
 +else
 +        mac=`echo "​$mac"​ | $sed -e '​s/:/​-/​g'​`
 +fi
 +mac=${mac:​0:​8} ​
 +if [ -z $silent ]; then
 +        echo "​Searching for $mac..."​
 +fi
 +result=`$awk --assign IGNORECASE=1 '/hex/ && /'​$mac'/​ {for (x=3; x<=NF; x++) {printf("​%s ",​$x)}}'​ $filename`
 +if [ -z "​$result"​ ]; then
 +        result="​no info"
 +fi
 +echo -n $result
 +</​file>​
poluchenie_proizvoditelja_po_mac-adresu.txt · Последние изменения: 2013/10/23 15:15 (внешнее изменение)
GNU Free Documentation License 1.3
Driven by DokuWiki Recent changes RSS feed Valid CSS Valid XHTML 1.0 Яндекс.Метрика