Сегодня мы произведем рефакторинг кода в целях его сокращения. Также добавим пользователю возможность вводить ключи с командной строки. Нам этом мы завершим разработку сетевого сканера.
Рефа́кторинг (англ. refactoring), или перепроектирование кода, переработка кода, равносильное преобразование алгоритмов — процесс изменения внутренней структуры программы.
в 3-5 строках у нас создаются и объединяются переменные. Объединим эти три строки и присвоим значение переменной broadcast. Соответсвующим образом изменим строку 5. Переменную answer_yes переименуем в answered_list. И наконец переменную, передаваемую в функцию scan, переименуем в ip.
Теперь 2-4 строчки кода должны выглядеть так:
Далее, вместо вывода на экран результатов, каждый из найденных ip сохраним в словаре current_ip_dict, а словари с ip - в списке словарей ip_list.
Сделаем, чтобы функция scan возвращала список словарей. Теперь наша функция выглядит так:
Вывод результатов на экран организуем в отдельной функции print_scan. В ней мы по значениям будем перебирать полученный список и выводить результаты на экран:
Теперь у нас две независимые функции, а исполняемый код программы составляет ровно одну строку:
print_scan (scaner ('192.168.0.1/24'))
Остается последний шаг - дать возможность пользователю вводить ключ - команду и аргумент из командной строки. Для этого нам нужно установить модуль argparse. Он предназначен для обработки опций и аргументов командой строки с которой мы будем вызывать программу.
Нам потребуются :
ArgumentParser() - создает копию объекта argparse
add_argument() - добавляет требуемые аргументы в наш объект
parse_args() - генерирует строку с учетом указанных аргументов
Создадим еще одну функцию:
а код самого скрипта составляет две строчки:
Итог его работы
В следующем цикле статей мы будем программировать программу для смены MAC-адреса.
Подпишитесь, чтобы точно не пропустить!
А сетевой сканер мы запрограммировали и теперь можем пользоваться.