Форум сайта python.su
Доброго времени суток!
Решил написать инсталлер, поиск не помог найти нужное, написал проверку айпи адреса через модуль ipaddress, ещё нужна проверка маски и роутера, в принципе айпи роутера можно проверить таким же образом как и айпи машины, вот с маской загвоздка.
Bот код.
def ip_checker(ip): try: if ipaddress.ip_address(ip).is_private: print('IP address is correct') global ip_bool ip_bool = False return ip_bool else: print('Try again.You must use only 192.168.0.0/16, 10.0.0.0/8 or 172.16.0.0/12') return ip_bool except ValueError: print('IP address is not correct') return ip_bool
Офлайн
hokey
p.s. one more question…=grep ip в предпоследней строке не работает, как можно использовать переменную назначенную в коде питона запихнуть в os.system?
mask = os.system('ifconfig | grep %s' % ip)
Офлайн
hokeyдавайте вы расскажете что конкретно вы хотите? Чтобы маска была ровно такая как в настройках сетевой карты? а если у человека две сетевухи? а если три? или просто коректность введенной маски?
hokey
[code python][/code]
Офлайн
PEHDOMИнсталлер ставит несколько пакетов и сам настраивает, но чтобы настроить dhcp-сервер, нужны айпи роутера, машины которая будет принимать соединения(PXE-сервер) и маску. Айпи, маска и роутер полученные таким путем вставляются в код который будет ниже…т.е. человек ввел приватный айпишник, далее вводит маску и роутер, после того как человек ввел 255.0.0.0. например, нужно проверить подходит ли эта маска для внутренних адресов(для 192.168.0.0 не подходит например).
option domain-name-servers 8.8.8.8, 8.8.4.4; option ip-forwarding on; default-lease-time 60; min-lease-time 120; max-lease-time 240; authoritative; ddns-update-style interim; log-facility local7; option space pxelinux; option pxelinux.magic code 208 = string; option pxelinux.configfile code 209 = text; option pxelinux.pathprefix code 210 = text; shared-network PXE-Network { subnet 192.168.1.0 netmask 255.255.255.0{ range start_ip_address end_ip_address; option routers router_ip_address; option subnet-mask 255.255.255.0; option domain-name-servers 8.8.8.8, 8.8.4.4; filename "gpxelinux.0"; next-server PXEserver_ip_address; option root-path "PXEserver_ip_address:/srv/tftp/"; option pxelinux.configfile "http://PXEserver_ip_address/srv/tftp/pxelinux.cfg/default"; option pxelinux.pathprefix "http://PXEserver_ip_address/srv/tftp/"; vendor-option-space pxelinux; }
Отредактировано hokey (Сен. 18, 2018 16:39:12)
Офлайн
BM21Экранировать это типа raw_input?Я просто только учусь)
Офлайн
hokey
, по поводу маски метод overlaps класса IPv4Network, тогоже пакета ipaddress.
Экранировать это исключать возможность изменить суть команды через перемнную.
Ну например
mask = os.system('ifconfig | grep %s' % ip)
Офлайн
BM21
hokey, по поводу маски метод overlaps класса IPv4Network, тогоже пакета ipaddress.Экранировать это исключать возможность изменить суть команды через перемнную.Ну например
Офлайн
hokeyтут ведь собсна вопрос критериев подходит-неподходит. Для 192.168.0.0 255.255.255.0 подходит? а 255.255.0.0? а 255.255.255.240? Ага, все они подходят.В такой постановке вопроса нам нужно только понимать маска менее 8, 12 или 16 в случаях если ИП у нас из частного диапазона. соотвевенно нам нужно:
после того как человек ввел 255.0.0.0. например, нужно проверить подходит ли эта маска для внутренних адресов(для 192.168.0.0 не подходит например).
[code python][/code]
Отредактировано PEHDOM (Сен. 19, 2018 15:03:53)
Офлайн