add func subnets

This commit is contained in:
Marsh232
2022-09-08 21:24:22 +03:00
parent 46d364158d
commit c2387a14d7
2 changed files with 39 additions and 12 deletions

19
.idea/workspace.xml generated
View File

@@ -4,7 +4,7 @@
<option name="autoReloadType" value="SELECTIVE" /> <option name="autoReloadType" value="SELECTIVE" />
</component> </component>
<component name="ChangeListManager"> <component name="ChangeListManager">
<list default="true" id="56d3644b-12ed-4137-967a-9e3a3c12d93b" name="Changes" comment="hz"> <list default="true" id="56d3644b-12ed-4137-967a-9e3a3c12d93b" name="Changes" comment="">
<change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" /> <change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" />
<change beforePath="$PROJECT_DIR$/main.py" beforeDir="false" afterPath="$PROJECT_DIR$/main.py" afterDir="false" /> <change beforePath="$PROJECT_DIR$/main.py" beforeDir="false" afterPath="$PROJECT_DIR$/main.py" afterDir="false" />
</list> </list>
@@ -68,6 +68,9 @@
<module name="Telegram-IP-CALC" /> <module name="Telegram-IP-CALC" />
<option name="INTERPRETER_OPTIONS" value="" /> <option name="INTERPRETER_OPTIONS" value="" />
<option name="PARENT_ENVS" value="true" /> <option name="PARENT_ENVS" value="true" />
<envs>
<env name="PYTHONUNBUFFERED" value="1" />
</envs>
<option name="SDK_HOME" value="C:\Users\truno\AppData\Local\Programs\Python\Python310\python.exe" /> <option name="SDK_HOME" value="C:\Users\truno\AppData\Local\Programs\Python\Python310\python.exe" />
<option name="WORKING_DIRECTORY" value="$PROJECT_DIR$" /> <option name="WORKING_DIRECTORY" value="$PROJECT_DIR$" />
<option name="IS_MODULE_SDK" value="false" /> <option name="IS_MODULE_SDK" value="false" />
@@ -100,6 +103,7 @@
<workItem from="1662485900255" duration="690000" /> <workItem from="1662485900255" duration="690000" />
<workItem from="1662496666820" duration="3601000" /> <workItem from="1662496666820" duration="3601000" />
<workItem from="1662542574124" duration="3363000" /> <workItem from="1662542574124" duration="3363000" />
<workItem from="1662648763510" duration="5768000" />
</task> </task>
<task id="LOCAL-00001" summary="Add basic output"> <task id="LOCAL-00001" summary="Add basic output">
<created>1662545492088</created> <created>1662545492088</created>
@@ -137,7 +141,18 @@
<MESSAGE value="hz" /> <MESSAGE value="hz" />
<option name="LAST_COMMIT_MESSAGE" value="hz" /> <option name="LAST_COMMIT_MESSAGE" value="hz" />
</component> </component>
<component name="XDebuggerManager">
<breakpoint-manager>
<breakpoints>
<line-breakpoint enabled="true" suspend="THREAD" type="python-line">
<url>file://$PROJECT_DIR$/main.py</url>
<line>37</line>
<option name="timeStamp" value="1" />
</line-breakpoint>
</breakpoints>
</breakpoint-manager>
</component>
<component name="com.intellij.coverage.CoverageDataManagerImpl"> <component name="com.intellij.coverage.CoverageDataManagerImpl">
<SUITE FILE_PATH="coverage/Telegram_IP_CALC$main.coverage" NAME="main Coverage Results" MODIFIED="1662545951987" SOURCE_PROVIDER="com.intellij.coverage.DefaultCoverageFileProvider" RUNNER="coverage.py" COVERAGE_BY_TEST_ENABLED="true" COVERAGE_TRACING_ENABLED="false" WORKING_DIRECTORY="$PROJECT_DIR$" /> <SUITE FILE_PATH="coverage/Telegram_IP_CALC$main.coverage" NAME="main Coverage Results" MODIFIED="1662659792918" SOURCE_PROVIDER="com.intellij.coverage.DefaultCoverageFileProvider" RUNNER="coverage.py" COVERAGE_BY_TEST_ENABLED="true" COVERAGE_TRACING_ENABLED="false" WORKING_DIRECTORY="$PROJECT_DIR$" />
</component> </component>
</project> </project>

32
main.py
View File

@@ -2,25 +2,37 @@ import ipaddress
def main(ip): def main(ip):
list_ip = ip.split('/') # Разделяет вводимый ip на часть с маской, и без list_ip = ip.split('/') # Разделяет вводимый ip на часть с маской, и без
ipv4 = ipaddress.ip_address(list_ip[0]) print('Ваш ip адрес:', ip) # Выводит например "Ваш ip адрес: 192.168.10.128/24"
print('Ваш ip адрес:', ip) # Выводит например "Ваш ip адрес: 192.168.10.128/24"
net = ipaddress.ip_network(ip, strict=False) # В функцию кладётся сетевая часть ip, без хостовой части net = ipaddress.ip_network(ip, strict=False) # В функцию кладётся сетевая часть ip, без хостовой части
print('Маска:', net.netmask, '=', list_ip[1], '\n') # Выводит маску print('Маска:', net.netmask, '=', list_ip[1], '\n') # Выводит маску
print('Network:', net) # Выводит сеть print('Network:', net) # Выводит сеть
print('Broadcast:', net.broadcast_address) # Выводит broad print('Broadcast:', net.broadcast_address) # Выводит broad
print('HostMin:', net[1]) print('HostMin:', net[1])
print('HostMax:', net[-2]) print('HostMax:', net[-2])
print('Hosts:', len(list(net.hosts()))) # Выводит кол-во хостовых ip print('Hosts:', len(list(net.hosts()))) # Выводит кол-во хостовых ip
count = 0 count = 0
for n_ip in net.hosts(): for n_ip in net.hosts():
count += 1 count += 1
if str(n_ip) == list_ip[0]: if str(n_ip) == list_ip[0]:
print('№ в сети:', count) # Выводит какой ip по счёту в сети print('№ в сети:', count) # Выводит какой ip по счёту в сети
break break
def subnets(ip, prefix):
subnet = ipaddress.ip_network(ip, strict=False)
list_subnet = list(subnet.subnets(new_prefix=int(prefix)))
subnet1 = ipaddress.ip_network(str(list_subnet[1]), strict=False)
print('\nМаска:', subnet1.netmask, '=', prefix)
#for i in
if __name__ == '__main__': if __name__ == '__main__':
addr = input('Введите ip: ') # Пользователь вводит ip addr = input('Введите ip: ') # Пользователь вводит ip
main(addr) main(addr)
# Тут должна быть кнопка типа "Подсети"
new_prefix = input('\nВведите префикс: ')
subnets(addr, new_prefix)