Найти в Дзене
Практика Python

Программируем сканер локальной сети. Часть 7

Сегодня мы произведем рефакторинг кода в целях его сокращения. Также добавим пользователю возможность вводить ключи с командной строки. Нам этом мы завершим разработку сетевого сканера.

Рефа́кторинг (англ. refactoring), или перепроектирование кода, переработка кода, равносильное преобразование алгоритмов — процесс изменения внутренней структуры программы.
текущий код
текущий код

в 3-5 строках у нас создаются и объединяются переменные. Объединим эти три строки и присвоим значение переменной broadcast. Соответсвующим образом изменим строку 5. Переменную answer_yes переименуем в answered_list. И наконец переменную, передаваемую в функцию scan, переименуем в ip.

Теперь 2-4 строчки кода должны выглядеть так:

Рефакторинг функции  scan
Рефакторинг функции scan

Далее, вместо вывода на экран результатов, каждый из найденных ip сохраним в словаре current_ip_dict, а словари с ip - в списке словарей ip_list.

Сделаем, чтобы функция scan возвращала список словарей. Теперь наша функция выглядит так:

Рефакторинг функции  scan
Рефакторинг функции scan

Вывод результатов на экран организуем в отдельной функции print_scan. В ней мы по значениям будем перебирать полученный список и выводить результаты на экран:

Функция print_scan
Функция print_scan

Теперь у нас две независимые функции, а исполняемый код программы составляет ровно одну строку:

print_scan (scaner ('192.168.0.1/24'))

Остается последний шаг - дать возможность пользователю вводить ключ - команду и аргумент из командной строки. Для этого нам нужно установить модуль argparse. Он предназначен для обработки опций и аргументов командой строки с которой мы будем вызывать программу.

Нам потребуются :

ArgumentParser() - создает копию объекта argparse

add_argument() - добавляет требуемые аргументы в наш объект

parse_args() - генерирует строку с учетом указанных аргументов

Создадим еще одну функцию:

парсим опции командной строки
парсим опции командной строки

а код самого скрипта составляет две строчки:

код основного тела скрипта
код основного тела скрипта

Итог его работы

Вывод сетевого сканера, сделанного своими руками
Вывод сетевого сканера, сделанного своими руками

В следующем цикле статей мы будем программировать программу для смены MAC-адреса.

Подпишитесь, чтобы точно не пропустить!

А сетевой сканер мы запрограммировали и теперь можем пользоваться.

netdiscover входит в стандартный комплект Kali Linux
netdiscover входит в стандартный комплект Kali Linux