Скрипт для сбора портов подключения коммутаторов D-link, Zyxel и занесение их в NetK
Скажу сразу, всё оборудование уже занесено в NetK — визуализатор сети, поэтому задача построения топологии сети не ставилась. Однако данные скрипты могут послужить основой для автоматической генерации топологии сети.
Итак, необходимо получить информацию по портам подключения коммутаторов:
1) порт вышестоящего коммутатора, к которому подключен текущий коммутатор;
2) порт (uplink) текущего коммутатора, к которому подключен вышестоящий коммутатор.
Пример портов подключения из NetK — коммутатор с IP-адресом 10.32.198.234 (назовем его текущий коммутатор) подключен к 26 порту вышестоящего коммутатора с IP-адресом 10.32.198.249. Порт подключения на текущем коммутаторе — 28.
Для реализации данной задачи буду перебирать MAC-адреса, полученные из таблицы коммутации оборудования. Предварительно необходимо пропинговать коммутатор (в случае, если к нему давно не было обращений), MAC-адрес которого необходимо найти, чтобы данный мак появился в arp таблице.
IP и MAC-адреса формировала sql запросом к базе данных NetK в следующем формате.
1. Для получения порта вышестоящего коммутатора, на который подключен текущий коммутатор:
|
где 10.32.198.249 — IP-адрес вышестоящего коммутатора, на котором необходимо найти MAC-адрес 00:1e:58:a0:dc:62 текущего коммутатора 10.32.198.134. Флаг 1 указывает, что производитель коммутатора 10.32.198.249 -D-link (флаг 0 — для коммутаторов Zyxel).
2. Для получения порта (uplink) текущего коммутатора, к которому подключен вышестоящий коммутатор:
|
где 10.32.198.234 — IP-адрес текущего коммутатора, на котором необходимо найти MAC-адрес 00:1e:58:a8:56:2d вышестоящего коммутатора 10.32.198.249. Флаг 1 указывает, что производитель коммутатора 10.32.198.234 -D-link (флаг 0 — для коммутаторов Zyxel).
IP-адреса коммутаторов D-link и Zyxel формировала отдельными списками ввиду большого количества оборудования — порядка 4-х тысяч.
Алгоритм сбора портов подключения коммутаторов:
1. Заходим по telnet на коммутатор, IP-адрес которого указан первым в строке.
2. Пингуем коммутатор, IP-адрес которого указан вторым в строке.
На коммутаторах D-link:
1 2 |
|
На коммутаторах Zyxel:
1 2 |
|
3. Выполняем команду snmpwalk из пакета Net-SNMP.
На коммутаторах D-link:
|
Пример возвращаемого значения:
.1.3.6.1.2.1.17.7.1.2.2.1.2.2.0.28.240.40.57.191 = INTEGER: 21
где 0.28.240.40.57.191 — MAC-адрес в десятичной системе;
21 — номер порта.
На коммутаторах Zyxel:
|
Пример возвращаемого значения:
.1.3.6.1.2.1.17.4.3.1.2.0.1.108.25.235.110 = INTEGER: 11
где 0.1.108.25.235.120 — MAC-адрес в десятичной системе;
11 — номер порта.
4. Сравниваем мак-адреса из таблицы коммутации с мак-адресом из строки и находим необходимый порт.
Скрипт сбора портов подключения коммутаторов — port.pl:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 |
|
Результат можно наблюдать в файле dump_port.log. Формат записей:
|
где 26 — искомый порт.
Скрипт обновления порта подключения текущего коммутатора к вышестоящему в базе данных NetK
В примере выше для узла с IP-адресом 10.32.198.234 номер порта — 26. Пример входных данных:
|
update_port_to.php:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
|
Скрипт обновления порта подключения вышестоящего коммутатора к текущему в базе данных NetK
В примере выше для узла с IP-адресом 10.32.198.234 номер порта - 28. Пример входных данных:
|
update_port_for.php:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
|