Source code for slacm.utils

'''
Created on Sep 19, 2020

@author: esdev
'''

import socket
import collections
from contextlib import closing
import netifaces
from slacm.config import Config

NetInfo = collections.namedtuple('NetInfo','globalHost localHost macAddress')

[docs] def get_network_interfaces(nicName=None): ''' Determine the IP address of the network interfaces Return a tuple of list of global IP addresses, list of MAC addresses, and local IP address ''' if nicName is None: nicName = Config.NIC_NAME local = '127.0.0.1' ipAddressList = [] macAddressList = [] ifNameList = [] ifNames = netifaces.interfaces() found = False for ifName in ifNames: ifInfo = netifaces.ifaddresses(ifName) if netifaces.AF_INET in ifInfo: ifAddrs = ifInfo[netifaces.AF_INET] ifAddr = ifAddrs[0]['addr'] if ifAddr == '127.0.0.1': pass else: ipAddressList.append(ifAddr) ifNameList.append(ifName) linkAddrs = netifaces.ifaddresses(ifName)[netifaces.AF_PACKET] linkAddr = linkAddrs[0]['addr'].replace(':','') macAddressList.append(linkAddr) if(nicName == ifName) or (nicName == ifAddr): ipAddressList = [ipAddressList[-1]] macAddressList = [macAddressList[-1]] found = True break return (ipAddressList,macAddressList,ifNameList,local,found)
[docs] def find_free_port(): ''' Find a free (available) port number. ''' with closing(socket.socket(socket.AF_INET, socket.SOCK_STREAM)) as s: s.bind(('', 0)) s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) return s.getsockname()[1]
if __name__ == '__main__': pass