Latest posts on Проверка валидности сетевой маски. topichttps://python.su/forum/topic/35893/2018-09-19T14:51:39+03:00Общий :: Network :: Проверка валидности сетевой маски.
2018-09-19T14:51:39+03:00PEHDOM195056<blockquote><em>hokey</em><br/>после того как человек ввел 255.0.0.0. например, нужно проверить подходит ли эта маска для внутренних адресов(для 192.168.0.0 не подходит например).</blockquote> тут ведь собсна вопрос критериев подходит-неподходит. Для 192.168.0.0 255.255.255.0 подходит? а 255.255.0.0? а 255.255.255.240? Ага, все они подходят.В такой постановке вопроса нам нужно только понимать маска менее 8, 12 или 16 в случаях если ИП у нас из частного диапазона. соотвевенно нам нужно:<br/>1. перевести данные из десятичного формата в двоичный.<br/>2. посчитать идут ли все единицы подряд, если не подряд то сразу говорим что маска неправильная<br/>3. если все единицы подряд, посчитать их колличество, если оно больше или равно 8, 12 или 16(в зависимости от того какая у нас подсеть) то все ОК, иначе выдаем что маска неправильная.<br/> <br/>ЗЫ а можно в тупую создать словарь со всеми возможными масками, благо их вообще всего 33 по типу <br/>{'0.0.0.0': 0, ‘128.0.0.0’: 1, ‘192.0.0.0’ : 2…} и смотреть если ключа нет с словаре то маска точно не валидная, если такой ключ есть, то брать значение и сравнивать ужо с 8, 12 или 16. Это конечно если маску вы получаете в виде строки, а не в виде 4-х отдельных чисел.
Общий :: Network :: Проверка валидности сетевой маски.
2018-09-18T17:24:37+03:00hokey195026<blockquote><em>BM21</em><br/>hokey, по поводу маски метод overlaps класса IPv4Network, тогоже пакета ipaddress.Экранировать это исключать возможность изменить суть команды через перемнную.Ну например</blockquote><br/><br/>Это простой инсталлер, человек сам на своем компе запускает его, чтобы вручную не настраивать файлы, а сделать все скриптом…тут как бы если он напишет какой то код то себе хуже, просто делаю так скажем защиту, если допустим промахнулся и поставил не ту цифру, проверка только для этого…
Общий :: Network :: Проверка валидности сетевой маски.
2018-09-18T16:58:47+03:00BM21195025<strong>hokey<br/></strong>, по поводу маски метод overlaps класса IPv4Network, тогоже пакета ipaddress.<br/>Экранировать это исключать возможность изменить суть команды через перемнную.<br/>Ну например <div class="code"><pre>mask = os.system('ifconfig | grep %s' % ip) </pre></div>и вместо ip будет что-то вроде “ && echo ‘shell’ > /var/www/html/shell.php”. И.т.д. Тоесть данные от пользователя желательно проверять… Но тут они и так вроде проверяются.
Общий :: Network :: Проверка валидности сетевой маски.
2018-09-18T16:42:42+03:00hokey195023<blockquote><em>BM21</em><br/></blockquote>Экранировать это типа raw_input?Я просто только учусь)
Общий :: Network :: Проверка валидности сетевой маски.
2018-09-18T16:38:16+03:00hokey195022<blockquote><em>PEHDOM</em><br/></blockquote>Инсталлер ставит несколько пакетов и сам настраивает, но чтобы настроить dhcp-сервер, нужны айпи роутера, машины которая будет принимать соединения(PXE-сервер) и маску. Айпи, маска и роутер полученные таким путем вставляются в код который будет ниже…т.е. человек ввел приватный айпишник, далее вводит маску и роутер, после того как человек ввел 255.0.0.0. например, нужно проверить подходит ли эта маска для внутренних адресов(для 192.168.0.0 не подходит например).<br/><br/>Надеюсь смог понятно объяснить, вот dhcp.conf<br/><div class="code"><pre> option domain-name-servers <span class="m">8</span>.8.8.8, <span class="m">8</span>.8.4.4<span class="p">;</span>
option ip-forwarding on<span class="p">;</span>
default-lease-time <span class="m">60</span><span class="p">;</span>
min-lease-time <span class="m">120</span><span class="p">;</span>
max-lease-time <span class="m">240</span><span class="p">;</span>
authoritative<span class="p">;</span>
ddns-update-style interim<span class="p">;</span>
log-facility local7<span class="p">;</span>
option space pxelinux<span class="p">;</span>
option pxelinux.magic code <span class="nv">208</span> <span class="o">=</span> string<span class="p">;</span>
option pxelinux.configfile code <span class="nv">209</span> <span class="o">=</span> text<span class="p">;</span>
option pxelinux.pathprefix code <span class="nv">210</span> <span class="o">=</span> text<span class="p">;</span>
shared-network PXE-Network <span class="o">{</span>
subnet <span class="m">192</span>.168.1.0 netmask <span class="m">255</span>.255.255.0<span class="o">{</span>
range start_ip_address end_ip_address<span class="p">;</span>
option routers router_ip_address<span class="p">;</span>
option subnet-mask <span class="m">255</span>.255.255.0<span class="p">;</span>
option domain-name-servers <span class="m">8</span>.8.8.8, <span class="m">8</span>.8.4.4<span class="p">;</span>
filename <span class="s2">"gpxelinux.0"</span><span class="p">;</span>
next-server PXEserver_ip_address<span class="p">;</span>
option root-path <span class="s2">"PXEserver_ip_address:/srv/tftp/"</span><span class="p">;</span>
option pxelinux.configfile <span class="s2">"http://PXEserver_ip_address/srv/tftp/pxelinux.cfg/default"</span><span class="p">;</span>
option pxelinux.pathprefix <span class="s2">"http://PXEserver_ip_address/srv/tftp/"</span><span class="p">;</span>
vendor-option-space pxelinux<span class="p">;</span>
<span class="o">}</span>
</pre></div>
Общий :: Network :: Проверка валидности сетевой маски.
2018-09-18T16:27:20+03:00PEHDOM195021<blockquote><em>hokey</em><br/>hokey</blockquote>давайте вы расскажете что конкретно вы хотите? Чтобы маска была ровно такая как в настройках сетевой карты? а если у человека две сетевухи? а если три? или просто коректность введенной маски?
Общий :: Network :: Проверка валидности сетевой маски.
2018-09-18T16:09:34+03:00BM21195020<blockquote><em>hokey</em><br/>p.s. one more question…=grep ip в предпоследней строке не работает, как можно использовать переменную назначенную в коде питона запихнуть в os.system?</blockquote><div class="code"><pre> <span class="n">mask</span> <span class="o">=</span> <span class="n">os</span><span class="o">.</span><span class="n">system</span><span class="p">(</span><span class="s1">'ifconfig | grep </span><span class="si">%s</span><span class="s1">'</span> <span class="o">%</span> <span class="n">ip</span><span class="p">)</span>
</pre></div>Ток желательно ее экранировать, если она перед этим непроверяется(переменная).<br/><br/>Нужно просто проверить входит ли маска в список тех что выше7<br/>
Общий :: Network :: Проверка валидности сетевой маски.
2018-09-18T15:56:22+03:00hokey195019Доброго времени суток!<br/>Решил написать инсталлер, поиск не помог найти нужное, написал проверку айпи адреса через модуль ipaddress, ещё нужна проверка маски и роутера, в принципе айпи роутера можно проверить таким же образом как и айпи машины, вот с маской загвоздка.<br/><br/>Bот код.<br/><br/><div class="code"><pre> <span class="k">def</span> <span class="nf">ip_checker</span><span class="p">(</span><span class="n">ip</span><span class="p">):</span>
<span class="k">try</span><span class="p">:</span>
<span class="k">if</span> <span class="n">ipaddress</span><span class="o">.</span><span class="n">ip_address</span><span class="p">(</span><span class="n">ip</span><span class="p">)</span><span class="o">.</span><span class="n">is_private</span><span class="p">:</span>
<span class="k">print</span><span class="p">(</span><span class="s1">'IP address is correct'</span><span class="p">)</span>
<span class="k">global</span> <span class="n">ip_bool</span>
<span class="n">ip_bool</span> <span class="o">=</span> <span class="bp">False</span>
<span class="k">return</span> <span class="n">ip_bool</span>
<span class="k">else</span><span class="p">:</span>
<span class="k">print</span><span class="p">(</span><span class="s1">'Try again.You must use only 192.168.0.0/16, 10.0.0.0/8 or 172.16.0.0/12'</span><span class="p">)</span>
<span class="k">return</span> <span class="n">ip_bool</span>
<span class="k">except</span> <span class="ne">ValueError</span><span class="p">:</span>
<span class="k">print</span><span class="p">(</span><span class="s1">'IP address is not correct'</span><span class="p">)</span>
<span class="k">return</span> <span class="n">ip_bool</span>
</pre></div><br/>Нужно проверить чтобы юзер вводил корректную сетевую маску. Подумал что можно сделать так. <br/><br/>mask = os.system('ifconfig | grep ip') #и из полученной строки выбрать маску чтобы вообще не спрашивать юзера.<br/><br/>Может есть лучший способ для проверки ?<br/><br/>p.s. one more question…=grep ip в предпоследней строке не работает, как можно использовать переменную назначенную в коде питона запихнуть в os.system?<br/>