Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- try:
- import netaddr
- HAS_NETADDR = True
- except ImportError:
- HAS_NETADDR = False
- try:
- import netifaces
- HAS_NETIFACES = True
- except ImportError:
- HAS_NETIFACES = False
- from ansible.module_utils.basic import AnsibleModule
- def check_interfaces(name, address):
- result = {
- 'success': False,
- 'data': {
- 'found': False,
- 'name': '',
- 'interfaces': {}
- }
- }
- for interface in netifaces.interfaces():
- addresses = netifaces.ifaddresses(interface)
- result['data']['interfaces'][interface] = addresses
- try:
- if netaddr.IPAddress(addresses[netifaces.AF_INET][0]['addr']) in netaddr.IPNetwork(address):
- if interface == name:
- result['success'] = True
- result['data']['found'] = True
- result['data']['name'] = name
- else:
- result['success'] = True
- result['data']['found'] = False
- result['data']['name'] = interface
- except KeyError:
- pass
- return result
- def main():
- module = AnsibleModule(
- argument_spec=dict(
- name=dict(required=True),
- subnet=dict(required=True)
- )
- )
- if not HAS_NETADDR:
- module.fail_json(msg='The netaddr python module is required')
- if not HAS_NETIFACES:
- module.fail_json(msg='The netifaces python module is required')
- name = module.params['name']
- subnet = module.params['subnet']
- result_interface = check_interfaces(name, subnet)
- if not result_interface['success']:
- module.fail_json(data_interface=result_interface['data'], msg='No interface in subnet %s' % subnet)
- module.exit_json(data_interface=result_interface['data'])
- if __name__ == '__main__':
- main()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement