После первой лекции на курсе получил ДЗ.
Как по мне, материал лекции слабо согласуется с ДЗ, но для более опытного наверное было бы не сложно разобраться, для меня - сложно.
Понимаю, что гугл мне в помощь, но может подскажет кто - в какой книге можно найти подобный пример? Или на словах объяснить, что скрипт должен из себя представлять (без кода). Так сказать объяснить построчно «куда копать».
Вообще буду благодарен любой подсказке.
Уровень1
Написать скрипт, который может
получать не обязательный
аргумент командной строки ‘-s [v4,
v6, ab, n, mx]’ и выводит список
компаний отсортированных по
следующему признаку:
-s ab по алфавиту (домен второго
уровня)
-s v4 по количеству используемых
IPv4 в инфраструктуре компании
-s v6 по количеству используемых
IPv6 в инфраструктуре компании
-s n по суммарному кол-ву
используемых IPv4 и IPv6 адресов
в инфраструктуре компании
-s mx по кол-ву мейл серверов
используемых в инфраструктуре
компании
В случае отсутствия аргумента s
выводить список компаний с
подробной информацией в таком
формате:
------------------------------------------------------------------------------------
[компания1]
использует всего N IP адрессов, из
них:
N IPv4 адресов(IP1, IP2, IP3, .. IPn)
N IPv6 адресов(IP1, IP2, IP3, .. IPn)
использует N мейл серверов:
mail1.domain.com -> [ipv4: IP1, IP2, ,,IPn; ipv6: IP1, IP2, IP3, … IPn]
mail2.domain.com -> [ipv4: IP1, IP2, ,,IPn; ipv6: IP1, IP2, IP3, … IPn]
…
mailN.domain.com -> [ipv4: IP1, IP2, ,,IPn; ipv6: IP1, IP2, IP3, … IPn]
-------------------------------------------------------------------------------------
[компания2]
использует всего N IP адрессов, из
них:
N IPv4 адресов (IP1, IP2, IP3, .. IPn)
N IPv6 адресов (IP1, IP2, IP3, .. IPn)
использует N мейл серверов:
mail1.domain.com -> [ipv4: IP1,
IP2, ,,IPn; ipv6: IP1, IP2, IP3, … IPn]
mail2.domain.com -> [ipv4: IP1,
IP2, ,,IPn; ipv6: IP1, IP2, IP3, … IPn]
…
mailN.domain.com -> [ipv4: IP1,
IP2, ,,IPn; ipv6: IP1, IP2, IP3, … IPn]
-------------------------------------------------------------------------------------
и т.д.
Входные данные программа берёт
их файла, содержащего такие
строки:
mail.ru has address 217.69.139.201
alt3.aspmx.l.google.com has IPv6
address 2607:f8b0:4002:c07::1a
google.com has address
173.194.32.166
aspmx3.googlemail.com has IPv6
address 2607:f8b0:4001:c05::1b
alt1.aspmx.l.google.com has IPv6
address 2607:f8b0:4003:c02::1b
alt2.aspmx.l.google.com has IPv6
address 2607:f8b0:4001:c05::1a
google.com has address
173.194.32.174
aspmx3.googlemail.com has address
74.125.193.27
alt4.aspmx.l.google.com has IPv6
address 2607:f8b0:400d:c04::1b
google.com has address
173.194.32.167
aspmx2.googlemail.com has IPv6
address 2607:f8b0:4003:c02::1a
yandex.ru has address
213.180.204.11
vk.com mail is handled by 10
mail.vk.com.
microsoft-
com.mail.protection.outlook.com has
address 207.46.163.215
yandex.ru has address
93.158.134.11
alt1.aspmx.l.google.com has address
173.194.64.27
alt1.aspmx.l.google.com has address
173.194.64.27
mail.ru has address 94.100.180.199
alt2.aspmx.l.google.com has address
74.125.193.26
mx.yandex.ru has address
87.250.250.89
microsoft-
com.mail.protection.outlook.com has
address 207.46.163.170
microsoft-
com.mail.protection.outlook.com has
address 207.46.163.138
google.com mail is handled by 40
alt3.aspmx.l.google.com.
google.com has address
173.194.32.169
google.com mail is handled by 20
alt1.aspmx.l.google.com.
vk.com has address 87.240.131.99
mail.ru has address 94.100.180.201
google.com has address
173.194.32.165
mx.yandex.ru has address
213.180.204.89
mxs.mail.ru has address
217.69.139.150
mxs.mail.ru has address
94.100.180.150
microsoft-
com.mail.protection.outlook.com has
address 207.46.163.247
microsoft.com mail is handled by 10
microsoft-
com.mail.protection.outlook.com.
vk.com has IPv6 address
2a00:bdc0:3:103:1:0:403:905
alt4.aspmx.l.google.com has address
74.125.29.26
google.com has address
173.194.32.163
yandex.ru mail is handled by 10
mx.yandex.ru.
aspmx2.googlemail.com has address
173.194.64.26
mail.ru mail is handled by 10
mxs.mail.ru.
google.com has IPv6 address
2a00:1450:4010:c04::8a
alt1.aspmx.l.google.com has IPv6
address 2607:f8b0:4003:c02::1b
yandex.ru has address
213.180.193.11
vk.com has address 87.240.131.117
google.com has address
173.194.32.162
google.com has address
173.194.32.161
google.com mail is handled by 50
alt4.aspmx.l.google.com.
google.com has address
173.194.32.164
aspmx.l.google.com has address
74.125.143.27
reddit.com mail is handled by 10
aspmx3.googlemail.com.
mx.yandex.ru has IPv6 address
2a02:6b8::89
mx.yandex.ru has address
213.180.193.89
vk.com has IPv6 address
2a00:bdc0:3:103:1:0:403:906
vk.com has IPv6 address
2a00:bdc0:3:103:1:0:403:904
mail.ru has address 217.69.139.199
reddit.com mail is handled by 10
aspmx2.googlemail.com.
google.com has address
173.194.32.160
alt2.aspmx.l.google.com has address
74.125.193.26
reddit.com has address
66.171.224.19
reddit.com mail is handled by 1
aspmx.l.google.com.
alt3.aspmx.l.google.com has address
74.125.196.27
microsoft.com has address
65.55.58.201
reddit.com mail is handled by 5
alt1.aspmx.l.google.com.
reddit.com has address
66.171.224.34
alt2.aspmx.l.google.com has IPv6
address 2607:f8b0:4001:c05::1a
vk.com has address 87.240.143.241
aspmx.l.google.com has IPv6
address 2a00:1450:4010:c04::1b
aspmx.l.google.com has IPv6
address 2a00:1450:4010:c04::1b
mx.yandex.ru has address
77.88.21.89
google.com mail is handled by 10
aspmx.l.google.com.
microsoft.com has address
64.4.11.37
google.com mail is handled by 30
alt2.aspmx.l.google.com.
mail.vk.com has address
93.186.236.94
aspmx.l.google.com has address
74.125.143.27
mx.yandex.ru has address
93.158.134.89
google.com has address
173.194.32.168
reddit.com mail is handled by 5
alt2.aspmx.l.google.com.
Подсказка:
загляните в документацию по
Python и почитайте об open, sorted,
sys.argv (его можно использовать
на первых порах, когда вы ещё не
знаете как использовать классы,
модули, функци), также
ознакомьтесь с http://
legacy.python.org/dev/peps/
pep-0263/, вам пригодиться...
Уровень 2
Усложняется задача: программа
должна брать из файла список
доменов и сама уметь резолвить
доменное имя,
обладать таким же функционалом
сортировки.
Резолвить можно двумя
способами: 1) выполнять команду
(host или dig) в оболочке и парсить
вывод, 2) использовать модули
для работы с DNS (их много см.
https://pypi.python.org/pypi
%3Aaction=search&term=dns&submit=search )
или модуль socket из стандартной
библиотеки, однако он не даёт
возможности получить MX запись
домена.