def sampleapp(): appname = raw_input('Enter name of application : ') session_config = SessionConfig(SessionConfig.SessionTransportMode.TLS) #default is TLS if transport.lower() == "tipc" or transport == 2: session_config = SessionConfig(SessionConfig.SessionTransportMode.TIPC) session_config.ca_certs = root_cert_path session_config.certfile = client_cert_path session_config.keyfile = client_key_path ne = NetworkElement(switchIP, appname) con = ne.connect(username, password, session_config) print 'Connected to host' print "System Name: ", ne.properties.sys_name print "System Uptime: ", ne.properties.sys_uptime print "Total System Memory: ", ne.total_system_memory print "Free System Memory: ", ne.free_system_memory print "System CPU Utilization: ", ne.system_cpu_utilization, "%\n" print "System Connect Time: ", ne.get_connect_time() print "System Disonnect Time: ", ne.get_disconnect_time() print "System __str__ Method: ", ne print "Host Content String:\n", ne.properties.content_string ne.disconnect()
def __init__(self, networkElement, protocol): """ For internal use only """ super(EventManager, self).__init__() self.log = logging.getLogger(__name__) if networkElement != None and networkElement.session_handle != None and networkElement.session_handle.sessionProp != None: self.sessionProp = networkElement.session_handle.sessionProp else: self.sessionProp = SessionProperty(SessionConfig(None), networkElement) self.element = networkElement self.element_evt_processor = onep.NetworkEventIDL.NetworkEventIDL.Processor(self) self.topology_evt_processor = onep.TopologyEventIDL.TopologyEventIDL.Processor(self) self.location_evt_processor = onep.LocationEventIDL.LocationEventIDL.Processor(self) self.routing_evt_processor = onep.RoutingEventIDL.RoutingEventIDL.Processor(self) self.bulk_evt_processor = PolicyEventIDL.Processor(self) self.cs_evt_processor = ContainerServicesEventIDL.Processor(self) self.event_queue = collections.deque(maxlen=self.sessionProp.eventQueueSize) self.dedicated_event_queue_map = None self.dedicated_dispatcher_map = None self.listener_map = {} self.listener_client_data_map = {} self.vty_listener_map = {} self.vty_listener_client_data_map = {} self.bulk_listener_map = {} self.evt_protocol = None self.dispatchers = [] self.terminated = False self.ka_monitor = None self.event_id = 200 self.start_listeners(protocol)
def connect(ne_addr, ne_username, ne_password): # check to see if ne_addr is a valid IP(v6) address if not (HostIpCheck(ne_addr).is_ipv4() or HostIpCheck(ne_addr).is_ipv6()): raise ValueError('%s is not a valid IP address' % ne_addr) # TLS Connection (This is the TLS Pinning Handler) class PinningHandler(tlspinning.TLSUnverifiedElementHandler): def __init__(self, pinning_file): self.pinning_file = pinning_file def handle_verify(self, host, hashtype, finger_print, changed): return tlspinning.DecisionType.ACCEPT_ONCE # Connection to my onePK enabled Network Element config = SessionConfig(None) config.set_tls_pinning('', PinningHandler('')) config.transportMode = SessionConfig.SessionTransportMode.TLS network_element = NetworkElement(ne_addr) # Try authenticating, raise error if unsuccessful try: network_element.connect(ne_username, ne_password, config) except OnepConnectionException: raise ValueError('Invalid Credentials or unable to reach %s.' % network_element) return network_element
def scaleNotification(): for switch in switches: switchIP = switch[0] appName = switch[1] user = switch[2] pswd = switch[3] # # Set up session connection configuration and connect to the switch # ne = NetworkElement(switchIP, appName) if transport == 'TLS': session_config = SessionConfig( SessionConfig.SessionTransportMode.TLS) session_config.ca_certs = cert ne.connect(user, pswd, session_config) elif transport == 'TIPC': session_config = SessionConfig( SessionConfig.SessionTransportMode.TIPC) ne.connect(user, pswd, session_config) else: print "Please set-up a valid transport type: TIPC or TLS" exit(0) vty = VtyService(ne) vty.open() vlan_summary = vty.write("sh vlan summary") vty.close() vlan_sum = re.search('(?<=vlansum-all-vlan\t)(.*)', vlan_summary) if int(vlan_sum.group(0)) > int(scale_limits["max_vlans"]): string_print = "Vlan scale exceeded. Max vlan recommended:", scale_limits[ "max_vlans"], "vlan being used :", vlan_sum.group(0) print string_print ne.create_syslog_message( ne.OnepSyslogSeverity.ONEP_SYSLOG_CRITICAL, str(string_print)) print "Disconnecting from NE: ", switchIP ne.disconnect()
def __init__(self, ip, username='******', password='******'): self.ip = ip self.username = username self.password = password self.myapp = NetworkApplication.get_instance() if not self.myapp.name == 'onePK-Python-Course-app': self.myapp.name == 'onePK-Python-Course-app' self.session_config = SessionConfig( SessionConfig.SessionTransportMode.TLS) self.session_config.ca_certs = "/home/cisco/ca.pem"
def __init__(self, config, ne): """ Constructor Keyword argument: config The SessionConfig object whose attributes will be used and contained by this SessionProperty instance. ne The network element """ self.sessionConfig = SessionConfig(config) self.username = ne.username self.element = ne
def jconnect(self): session_config = SessionConfig(SessionConfig.SessionTransportMode.TLS) session_config.ca_certs = "/home/cisco/ca.pem" ne = self.myapp.get_network_element(self.address) if not ne.is_connected(): try: #print 'Trying to connect...' session_handle = ne.connect(self.username, self.password, session_config) #print 'Connection made to ' + self.address + ' successfully.' except OnepDuplicateElementException, e: #print e existing = e.get_original_network_element() #print existing print 'Unable to connect to device.' except Exception, e: #print e print 'Could not connect to ' + self.address + '. Please validate reachability.' return 'DNE'
def connect(self): session_config = SessionConfig( SessionConfig.SessionTransportMode.TLS) session_config.ca_certs = "/usr/local/certs/csr1kv-01.pem" ne = self.myapp.get_network_element(self._host) if not ne.is_connected(): try: session_handle = ne.connect(self._username, self._password, session_config) self._connected = True except OnepDuplicateElementException, e: # print e existing = e.get_original_network_element() # print existing print('Unable to connect to device.') except Exception, e: # print e print( 'Could not connect to {0} Please validate reachability.' .format(self._host)) return 'DNE'
# cert - certificate to be used for authentication in cse of TLS # transport # appName - OnePK application Name # switchIP - management Switch IP address # user - switch userID pswd = "<pswd>" logMsg = "syslog generated by onePK" ##################################################################### # # Set up session connection configuration and connect to the switch # ne = NetworkElement(switchIP, appName) if transport == 'TLS': session_config = SessionConfig(SessionConfig.SessionTransportMode.TLS) session_config.ca_certs = cert ne.connect(user, pswd, session_config) elif transport == 'TIPC': session_config = SessionConfig(SessionConfig.SessionTransportMode.TIPC) ne.connect(user, pswd) else: print "Please set-up a valid transport type: TIPC or TLS" exit(0) # # Create the syslog messange and disconnect from the device # print "Generating Syslog message." ne.create_syslog_message(ne.OnepSyslogSeverity.ONEP_SYSLOG_CRITICAL, logMsg) print "Check on switch logs using \"sh log log duration 00:05:00\" cli"
parser.add_option('-p', '--password', dest="password", help="[Mandatory] Account Password for Login") (options, args) = parser.parse_args() if not options.ip: parser.print_help() parser.error("Provide IP Address") if not options.userName: parser.print_help() parser.error("Provide UserName") if not options.password: options.password = getpassword("Password:") # Setup a connection config with TLS pinning handler config = SessionConfig(None) config.set_tls_pinning('', PinningHandler('')) config.transportMode = SessionConfig.SessionTransportMode.TLS # Connection to my onePK enabled Network Element ne = NetworkElement(options.ip, 'App_Name') ne.connect(options.userName, options.password, config) # Print the information of the Network Element print ne # Finally have the application disconnect from the Network Element ne.disconnect()
if args.c: command = args.c else: print "You have to specify a command (-c)" sys.exit() if args.v: victim = args.v else: print "You have to specify a victim (-u)" sys.exit() password = getpass.getpass("Please enter your password: "******"Prank Listener") cliFilter = CLIFilter(command) clientData = None eventHandle = router.add_cli_listener(cliListener, cliFilter, clientData) print "-----" print router print "-----" print "Waiting for command: " + command