tms-dos21-onl / anzhalika-tseliak

Apache License 2.0
0 stars 0 forks source link

[HW22] Python (знакомство) #29

Open AlexPykavy opened 3 months ago

AlexPykavy commented 3 months ago

Дедлайн: 08/05/2024

Задания можно реализовывать на Python или Go. Для обработки аргументов командной строки использовать пакет argparse (для Python) или flag (для Go).

1. Реализовать калькулятор подсетей subnet_calculator.py (наподобие https://www.calculator.net/ip-subnet-calculator.html), который принимает IP адрес и маску в формате CIDR (например, /27) как аргументы командной строки и выводит в консоль:
- адрес подсети
- маску подсети
- IP адреса первого и последнего хостов
- широковещательный адрес
- класс подсети

Описание аргументов командной строки скрипта:

./subnet_calculator.py --ip <ID_ADDRESS> --cidr-mask <CIDR_MASK>

Пример использования скрипта:

[root@localhost ~]# ./subnet_calculator.py --ip 192.168.10.1 --cidr-mask /24

Адрес подсети: 192.168.10.0
Маска подсети: 255.255.255.0
IP адрес первого хоста: 192.168.10.1
IP адрес последнего хоста: 192.168.10.254
Широковещательный адрес: 192.168.10.255
Класс подсети: C

2. (**) Создать скрипт filter.py, который считывает файл переданный через аргумент -f или же из стандартного потока ввода и выводит в стандартный поток вывода строки содержащие токен (или любой из токенов, если их было передано несколько) по заданному правилу. Для выполнения фильтрации использовать регулярные выражения.

Описание аргументов командной строки скрипта:

./filter.py [-f <FILE>] {contains|startswith|endswith} <TOKEN> ...

Пример использования скрипта:
[root@localhost ~]# cat ./file

VAR_1=A
VAR_2=B
VAR_3
VAR_4=D

[root@localhost ~]# cat ./file | ./filter.py contains = | ./filter.py startswith VAR_1 VAR_2

VAR_1=A
VAR_2=B

[root@localhost ~]# ./filter.py -f ./file contains = | ./filter.py startswith VAR_1 VAR_2

VAR_1=A
VAR2=B


** не обязательны к выполнению. Задачи на интерес_