Якось згубився в мене один мережевий пристрій. Ну нарулив я його і забув, яка там IP-адреса. 🙂
Перебравши по пам’яті кілька — зрозумів, що це не варто того часу. Покладемо цю задачу на машину, адже основна задача обчислювальних машин — робити за людей марудну одноманітну справу. А людям залишимо творчу діяльність та керування цими самими машинами. 😉
Що ж — до праці:
Для простоти реалізації було написано два однострічкових скрипти: перший сканує ІР-адреси в мережі, другий — фільтрує потрібні нам ІР-адреси.
1. Скрипт сканування мереж (пробує достукатися пінгом до всіх хостів всіх мереж з блоку 192.168.0.0/16
(тобто від 192.168.0.0
до 192.168.255.255
) ):
date;time (for net in `seq 0 255`;do echo -e "\n\n Now scanning NET [${net}]\n"; for ip in `seq 0 255`;do echo -n "${ip},"; ( ping -q -f -w 2 192.168.${net}.${ip} >/dev/null 2>&1 & ) ;done; sleep 2; echo "DONE"; done);date
2. Скрипт фільтрації MAC-адрес на Ethernet-інтерфейсі eth121
з відсканованих хостів:
while true ; do arp -n|grep -F 'eth121'|grep -vF incomplete;sleep 1;done
Звісно, сам цей інтерфейс повинен бути в цій мега-мережі, тобто мати IP-адресу наприклад, 192.168.254.254
з маскою 255.255.0.0 (/16)
.
Таким чином, на сканування мережі з 65536 вузлів було затрачено (без жодного напрягу для нашого вузла) близько 11 хвилин при паралельному переборі всієї мережі проти близько 17 годин при послідовному переборі всіх IP-адрес.