После первой лекции на курсе получил ДЗ.
Как по мне, материал лекции слабо согласуется с ДЗ, но для более опытного наверное было бы не сложно разобраться, для меня - сложно.
Понимаю, что гугл мне в помощь, но может подскажет кто - в какой книге можно найти подобный пример? Или на словах объяснить, что скрипт должен из себя представлять (без кода). Так сказать объяснить построчно «куда копать».
Вообще буду благодарен любой подсказке.
Уровень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 запись домена.