本文整理汇总了Python中netifaces.AF_INET属性的典型用法代码示例。如果您正苦于以下问题:Python netifaces.AF_INET属性的具体用法?Python netifaces.AF_INET怎么用?Python netifaces.AF_INET使用的例子?那么, 这里精选的属性代码示例或许可以为您提供帮助。您也可以进一步了解该属性所在类netifaces
的用法示例。
在下文中一共展示了netifaces.AF_INET属性的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: get_interfaces
# 需要导入模块: import netifaces [as 别名]
# 或者: from netifaces import AF_INET [as 别名]
def get_interfaces():
interfaces = netifaces.interfaces()
interfaces.remove('lo')
out_interfaces = dict()
for interface in interfaces:
addrs = netifaces.ifaddresses(interface)
out_addrs = dict()
if netifaces.AF_INET in addrs.keys():
out_addrs["ipv4"] = addrs[netifaces.AF_INET]
if netifaces.AF_INET6 in addrs.keys():
out_addrs["ipv6"] = addrs[netifaces.AF_INET6]
out_interfaces[interface] = out_addrs
return out_interfaces
示例2: select_chute_subnet_pool
# 需要导入模块: import netifaces [as 别名]
# 或者: from netifaces import AF_INET [as 别名]
def select_chute_subnet_pool(host_config):
"""
Select IP subnet to use as pool for chutes.
Behavior depends on whether a static subnet is configured or auto
configuration is requested. If the chuteSubnetPool option is set to 'auto',
then we check the WAN interface address and choose either 10.128.0.0/9 or
192.168.128.0/17 to avoid conflict. Otherwise, we used the specified
subnet.
"""
pool = datastruct.getValue(host_config, "system.chuteSubnetPool", 'auto')
wan_ifname = datastruct.getValue(host_config, 'wan.interface', 'eth0')
if pool == 'auto':
addresses = netifaces.ifaddresses(wan_ifname)
ipv4_addrs = addresses.get(netifaces.AF_INET, [])
if any(x['addr'].startswith("10.") for x in ipv4_addrs):
return "192.168.128.0/17"
else:
return "10.128.0.0/9"
else:
return pool
示例3: connectRemotes
# 需要导入模块: import netifaces [as 别名]
# 或者: from netifaces import AF_INET [as 别名]
def connectRemotes(self):
for remote in self.remoteAddrs:
if remote['socket']:
continue
# Attempt reconnection at most once every N seconds
if remote['connectFailure'] and remote['connectFailure'] > time.time()-self.remoteRetry:
return
remoteConnection = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
remoteConnection.setblocking(0)
self.logger.info('REMOTE: Connecting to remote %s' % remote['addr'])
remote['connecting'] = True
try:
remoteConnection.connect((remote['addr'], self.remotePort))
except socket.error as e:
if e.errno == errno.EINPROGRESS:
remote['socket'] = remoteConnection
else:
remote['connecting'] = False
remote['connectFailure'] = time.time()
示例4: _create_ipv4_sockets
# 需要导入模块: import netifaces [as 别名]
# 或者: from netifaces import AF_INET [as 别名]
def _create_ipv4_sockets(loopback_enabled):
# Open a multicast send socket, with IP_MULTICAST_LOOP enabled or disabled as requested.
mcast_address = "224.0.1.195"
port = 49501
group = (mcast_address, port)
txsock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM, socket.IPPROTO_UDP)
txsock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
if loopback_enabled:
txsock.setsockopt(socket.IPPROTO_IP, socket.IP_MULTICAST_LOOP, 1)
else:
txsock.setsockopt(socket.IPPROTO_IP, socket.IP_MULTICAST_LOOP, 0)
txsock.connect(group)
# Open a multicast receive socket and join the group
rxsock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM, socket.IPPROTO_UDP)
req = struct.pack("=4sl", socket.inet_aton(mcast_address), socket.INADDR_ANY)
rxsock.setsockopt(socket.IPPROTO_IP, socket.IP_ADD_MEMBERSHIP, req)
rxsock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
rxsock.bind(group)
return (txsock, rxsock)
示例5: default_physical_interface
# 需要导入模块: import netifaces [as 别名]
# 或者: from netifaces import AF_INET [as 别名]
def default_physical_interface(self):
# When simulated interfaces are disabled, the interface names on nodes correspond to real
# interfaces on the host platform.
# When simulated interface are enabled, the interface names on nodes are "fake" i.e. they do
# not correspond to real interfaces on the host platform. All these simulated interfaces
# actually run on a single real interface, referred to as the physical interface. Traffic to
# and from different simulated interfaces are distinguished by using different multicast
# addresses and port numbers for each simulated interface.
# Pick the first interface with a broadcast IPv4 address (if any) as the default.
for intf_name in netifaces.interfaces():
addresses = netifaces.ifaddresses(intf_name)
if netifaces.AF_INET in addresses:
ipv4_addresses = addresses[netifaces.AF_INET]
for ipv4_address in ipv4_addresses:
if 'broadcast' in ipv4_address:
return intf_name
print("Cannot pick default physical interface: no broadcast interface found")
sys.exit(1)
示例6: __pyroute2_get_host_by_ip
# 需要导入模块: import netifaces [as 别名]
# 或者: from netifaces import AF_INET [as 别名]
def __pyroute2_get_host_by_ip(ip):
import pyroute2
ipr = pyroute2.IPRoute()
routes = ipr.get_routes(family=socket.AF_INET, dst=ip)
ipr.close()
for route in routes:
for attr in route.get('attrs', []):
if type(attr) is list:
if attr[0] == 'RTA_PREFSRC':
return attr[1]
else:
if attr.cell[0] == 'RTA_PREFSRC':
return attr.get_value()
logger.critical(
'__pyroute2_get_host_by_ip() - No host found for IP {}!'.format(ip))
return None
示例7: find_internal_ip_on_device_network
# 需要导入模块: import netifaces [as 别名]
# 或者: from netifaces import AF_INET [as 别名]
def find_internal_ip_on_device_network(upnp_dev: upnpclient.upnp.Device) -> str:
"""
For a given UPnP device, return the internal IP address of this host machine that can
be used for a NAT mapping.
"""
parsed_url = urlparse(upnp_dev.location)
# Get an ipaddress.IPv4Network instance for the upnp device's network.
upnp_dev_net = ipaddress.ip_network(parsed_url.hostname + "/24", strict=False)
for iface in netifaces.interfaces():
for family, addresses in netifaces.ifaddresses(iface).items():
# TODO: Support IPv6 addresses as well.
if family != netifaces.AF_INET:
continue
for item in addresses:
if ipaddress.ip_address(item["addr"]) in upnp_dev_net:
return item["addr"]
raise NoInternalAddressMatchesDevice(device_hostname=parsed_url.hostname)
示例8: get_netmask
# 需要导入模块: import netifaces [as 别名]
# 或者: from netifaces import AF_INET [as 别名]
def get_netmask(self):
"""
Get ip network netmask
"""
if not CTYPES_SUPPORT:
raise exceptions.TestSkipError("Getting the netmask requires "
"python > 2.4")
ifreq = struct.pack('16sH14s', self.name.encode(),
socket.AF_INET, b'\x00' * 14)
try:
res = fcntl.ioctl(sockfd, arch.SIOCGIFNETMASK, ifreq)
except IOError:
return 0
netmask = socket.ntohl(struct.unpack('16sH2xI8x', res)[2])
return 32 - int(math.log(ctypes.c_uint32(~netmask).value + 1, 2))
示例9: canonicalize
# 需要导入模块: import netifaces [as 别名]
# 或者: from netifaces import AF_INET [as 别名]
def canonicalize(self, ip_str):
"""
Parse an IP string for listen to IPAddress content.
"""
try:
if ':' in ip_str:
self.version = 'ipv6'
if '%' in ip_str:
ip_str, scope = ip_str.split('%')
self.scope = int(scope)
self.packed_addr = socket.inet_pton(socket.AF_INET6, ip_str)
self.addr = socket.inet_ntop(socket.AF_INET6, self.packed_addr)
else:
self.version = 'ipv4'
self.packed_addr = socket.inet_pton(socket.AF_INET, ip_str)
self.addr = socket.inet_ntop(socket.AF_INET, self.packed_addr)
except socket.error as detail:
if 'illegal IP address' in str(detail):
self.addr = ip_str
self.version = 'hostname'
示例10: get_broadcast_list
# 需要导入模块: import netifaces [as 别名]
# 或者: from netifaces import AF_INET [as 别名]
def get_broadcast_list():
"""Return all broadcast addresses.
E.g. WOL messages need to be sent from all NICs.
"""
brlist = ['<broadcast>']
ifaces = [iface for iface in netifaces.interfaces() if iface != 'lo']
for ifname in ifaces:
# An interface can have more than one address, even within the
# same family (AF_INET), or none, so check this case too.
addresses = netifaces.ifaddresses(ifname)
if netifaces.AF_INET not in addresses:
continue
for addr in addresses[netifaces.AF_INET]:
if 'broadcast' in addr:
brlist.append(addr['broadcast'])
return brlist
示例11: wake_on_lan
# 需要导入模块: import netifaces [as 别名]
# 或者: from netifaces import AF_INET [as 别名]
def wake_on_lan(macaddress):
"""Power on remote computers using Wake On LAN."""
# Handle MACs with or without separators.
if len(macaddress) == 12:
pass
elif len(macaddress) == 12 + 5:
sep = macaddress[2]
macaddress = macaddress.replace(sep, '')
else:
raise ValueError('Incorrect MAC address format')
print("Sending magic packet to", macaddress)
packet = bytes.fromhex(''.join(['FFFFFFFFFFFF', macaddress * 20]))
# Broadcast it to the LAN.
sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
sock.setsockopt(socket.SOL_SOCKET, socket.SO_BROADCAST, 1)
for brd in get_broadcast_list():
sock.sendto(packet, (brd, 9))
示例12: get_all_ips
# 需要导入模块: import netifaces [as 别名]
# 或者: from netifaces import AF_INET [as 别名]
def get_all_ips():
"""
Find all IPs for this machine.
:return: ``set`` of IP addresses (``IPAddress``).
"""
ips = set()
interfaces = netifaces.interfaces()
for interface in interfaces:
addresses = netifaces.ifaddresses(interface)
for address_family in (netifaces.AF_INET, netifaces.AF_INET6):
family_addresses = addresses.get(address_family)
if not family_addresses:
continue
for address in family_addresses:
ips.add(ipaddress_from_string(address['addr']))
return ips
示例13: get_host_devices
# 需要导入模块: import netifaces [as 别名]
# 或者: from netifaces import AF_INET [as 别名]
def get_host_devices(iface_prefix=''):
rst = {}
for ifacename in netifaces.interfaces():
if not ifacename.startswith(iface_prefix):
continue
addrs = netifaces.ifaddresses(ifacename)
if netifaces.AF_INET in addrs and netifaces.AF_LINK in addrs:
ips = [addr['addr'] for addr in addrs[netifaces.AF_INET]]
for ip in ips:
if is_ip4_loopback(ip):
break
else:
rst[ifacename] = {'INET': addrs[netifaces.AF_INET],
'LINK': addrs[netifaces.AF_LINK]}
return rst
示例14: get_ip_for_interface
# 需要导入模块: import netifaces [as 别名]
# 或者: from netifaces import AF_INET [as 别名]
def get_ip_for_interface(interface_name, ipv6=False):
"""
Get the ip address in IPv4 or IPv6 for a specific network interface
:param str interace_name: declares the network interface name for which the ip should be accessed
:param bool ipv6: Boolean indicating if the ipv6 address should be rertrieved
:return: (str ipaddress, byte ipaddress_bytes) returns a tuple with the ip address as a string and in bytes
"""
addresses = netifaces.ifaddresses(interface_name)
if netifaces.AF_INET6 in addresses and ipv6:
# Use the normal ipv6 address
addr = addresses[netifaces.AF_INET6][0]['addr'].split('%')[0]
bytes_addr = ipaddress.IPv6Address(addr).packed
elif netifaces.AF_INET in addresses and not ipv6:
addr = addresses[netifaces.AF_INET][0]['addr']
bytes_addr = socket.inet_aton(addr)
else:
addr = None
bytes_addr = None
return addr, bytes_addr
示例15: __init__
# 需要导入模块: import netifaces [as 别名]
# 或者: from netifaces import AF_INET [as 别名]
def __init__(self,
data # Data suitable for this class
):
valid, message = data_is_valid(data)
if not valid:
raise ValueError("Invalid data: %s" % message)
self.cidrs = []
for iface in netifaces.interfaces():
ifaddrs = netifaces.ifaddresses(iface)
if netifaces.AF_INET in ifaddrs:
for ifaddr in ifaddrs[netifaces.AF_INET]:
if 'addr' in ifaddr:
self.cidrs.append(ipaddress.ip_network(unicode(ifaddr['addr'])))
if netifaces.AF_INET6 in ifaddrs:
for ifaddr in ifaddrs[netifaces.AF_INET6]:
if 'addr' in ifaddr:
#add v6 but remove stuff like %eth0 that gets thrown on end of some addrs
self.cidrs.append(ipaddress.ip_network(unicode(ifaddr['addr'].split('%')[0])))