Advertisement
Guest User

Untitled

a guest
Jun 19th, 2017
74
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.29 KB | None | 0 0
  1. from __future__ import print_function
  2. import os
  3. import sys
  4. from netmiko import ConnectHandler
  5.  
  6. target_mac = os.environ['TARGET_MAC']
  7. router_ip = os.environ['ROUTER_IP']
  8. router_user = os.environ['ROUTER_USER']
  9. password = os.environ['ROUTER_PW']
  10.  
  11. home = {
  12. 'device_type': 'cisco_ios',
  13. 'ip': router_ip,
  14. 'username': router_user,
  15. 'password': password,
  16. 'port' : 22,
  17. 'verbose': False,
  18. }
  19.  
  20.  
  21. def arp_lookup(mac, c):
  22. show_arp = c.send_command('show arp | i %s' % target_mac)
  23.  
  24. try:
  25. target_ip = show_arp.split()[1]
  26. except:
  27. print("target MAC not found")
  28. sys.exit()
  29.  
  30. print("target is %s" % target_ip)
  31. return target_ip
  32.  
  33. def execute(cmd_set, c):
  34. c.enable()
  35. return c.send_config_set(cmd_set)
  36.  
  37. def black_hole(mac, c):
  38. target_ip = arp_lookup(mac, c)
  39. null_route = [ 'ip route %s 255.255.255.255 null0' % target_ip ]
  40.  
  41. return execute(null_route, c)
  42.  
  43. def remove_black_hole(mac, c):
  44. target_ip = arp_lookup(mac, c)
  45. remove_null_route = [ 'no ip route %s 255.255.255.255 null0' % target_ip ]
  46.  
  47. return execute(remove_null_route, c)
  48.  
  49. def main():
  50. c = ConnectHandler(**home)
  51.  
  52. if sys.argv[1] == 'block':
  53. print(black_hole(target_mac, c))
  54. else:
  55. print(remove_black_hole(target_mac, c))
  56.  
  57. if __name__ == '__main__':
  58. main()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement