如何查找IP地址是否属于具有python2的网络?(How to find out if an IP address belong to a network with python2?)
如果我们有一个像192.168.1.168这样的IP地址。 我们有一个由192.168.1.0/24代表的网络
是否有一种好方法(最少代码)来确定ip是否属于网络?
netaddr模型似乎可以,但没有弄清楚如何。
If we have a IP address like 192.168.1.168. And We have a network represented by 192.168.1.0/24
Is there a good way (least code) to find out if the ip belong to the network?
The model netaddr seems can, but did not figure out how.
原文:https://stackoverflow.com/questions/37021569
更新时间:2019-12-09 20:16
最满意答案
import netaddr
ip = netaddr.IPAddress('192.168.1.168')
network = netaddr.IPNetwork('192.168.1.0/24')
print ip in network
import netaddr
ip = netaddr.IPAddress('192.168.1.168')
network = netaddr.IPNetwork('192.168.1.0/24')
print ip in network
相关问答
如果显示超出最大尝试次数 ,则系统正在执行以下两项操作之一: 它使用您的会话信息来跟踪您尝试过多少次 - 在这种情况下,您可以启动一个新的requests.session()来修复此问题 它使用您的外部IP地址 - 在这种情况下,更改您的内部IP地址不会产生太大的影响 无论哪种方式,更改内部IP地址都不会影响脚本的结果 If it says Maximum tries exceeded, then the system is doing one of two things: It's using
...
::1是IPv6中的环回地址。 将其视为127.0.0.1的IPv6版本。 见http://en.wikipedia.org/wiki/Localhost ::1 is the loopback address in IPv6. Think of it as the IPv6 version of 127.0.0.1. See http://en.wikipedia.org/wiki/Localhost
这篇文章显示,您可以使用socket和struct模块,而不需要太多的额外工作。 我添加了一点文章如下: import socket,struct
def makeMask(n):
"return a mask of n bits as a long integer"
return (2L<
def dottedQuadToNum(ip):
"convert decimal dotted quad string to long integer"
...
import netaddr
ip = netaddr.IPAddress('192.168.1.168')
network = netaddr.IPNetwork('192.168.1.0/24')
print ip in network
import netaddr
ip = netaddr.IPAddress('192.168.1.168')
network = netaddr.IPNetwork('192.168.1.0/24')
print ip in network
看起来开源项目confparse应该能够轻松地完成你正在寻找的东西。 事实上,他们的一个例子是轻松地解析和修改/etc/sysconfig/network-scripts/ifcfg-eth0 。 如果您发现这不是您所需要的,我说任何开源软件的努力都会在某些时候帮助其他人,因为它实际上是有用的。 ;) It looks like the open source project confparse should be able to easily do what you're looking for
...
感谢SomethingDark提供的解决方案: @echo off
for /f "tokens=1,2 delims=[]" %%a in ('ping -4 COMPNAME ^| find "Pinging"') do set ipaddress=%%b >nul
echo COMPNAME IP address is %ipaddress%
echo.
pause
事实上,通过向我显示选项: ping -4
通过以这种方式ping计算机名,我可以找到“TTL =”状态。 因此,我不
...
您无法直接获取子网外的计算机的MAC地址。 网络管理应用程序的常见策略是使用SNMP查询具有此信息的计算机,例如连接计算机的路由器和交换机。 路由器具有与它们直接连接的子网的arp表(因为它们需要它来完成它们的工作),并且可以从路由器获取此信息。 这个问题的答案可能有助于找到python库代码来帮助完成这项工作。 You can't directly get the MAC address of a machine outside your subnet. A common strategy fo
...
假设您只是尝试实现ARP请求,则应将请求发送到MAC广播地址( FF-FF-FF-FF-FF-FF )。 您应该在以太网报头中填写您自己的NIC的MAC地址作为源地址,并作为ARP发送方MAC地址填写。 ARP通常的工作方式是将广播消息发送到本地网络,本质上是说“嘿大家,谁拥有IP地址NNNN ?告诉我 。 它通常还包括发件人的IP地址,实际上说“哦,顺便说一下,我的IP地址是MMMM 。 然后,响应通常通过单播发送回请求者,这就是您需要填写自己的MAC作为发件人地
...
这就是我最终做的事情: IPAddress localAddr = null;
try
{
using (UdpClient udpClient = new UdpClient("8.8.8.8", 0)) //connect to google dns
{
localAddr = ((IPEndPoint)udpClient.Client.LocalEndPoint).Address;
udpClient.Client.Close();
...