Module aeromiko.aeromiko
Expand source code
# import aeromiko.templates
import tempfile
import textfsm
import netmiko
from . import templates
try:
import importlib.resources as pkg_resources
except ImportError:
import importlib_resources as pkg_resources
class AP:
def __init__(self, ip: str, username: str, password: str):
self.ip = ip
self.password = password
self.username = username
def connect(self, port=22, verbosity=False):
"""Establish SSH connection to the access point
Parameters
----------
verbosity : bool, optional
Toggle verbose SSH connection information, by default False
"""
switch = {
"device_type": "cisco_ios",
"ip": self.ip,
"username": self.username,
"password": self.password,
"port": port,
"verbose": verbosity,
}
self.net_connect = netmiko.ConnectHandler(**switch)
self.net_connect.find_prompt()
self.net_connect.send_command("console page 0")
def disconnect(self):
return self.net_connect.disconnect()
def send_command(self, command: str):
"""Send CLI command to AP and return raw response
Parameters
----------
command : str
CLI command to send
Returns
-------
str
raw CLI response
"""
return self.net_connect.send_command(command)
def send_config(self, command_list: list):
"""Send list of CLI commands to access point
Parameters
----------
command_list : list
list of CLI commands to send to AP
Returns
-------
str
CLI output resulting from AP
"""
return self.net_connect.send_config_set(command_list)
def fsm_parse(self, command_response: str, template=str):
"""Get structured data from CLI command response, via textFSM template
Parameters
----------
command : str
response string from CLI
template : str
raw textFSM template string
or
name of predefined template from aeromiko package
raw : boolean
Returns
-------
dict
structured data extracted from CLI response
"""
if template.startswith("Value"):
textfsm_template = template
else:
textfsm_template = pkg_resources.read_text(templates, template)
tmp = tempfile.NamedTemporaryFile(delete=False)
with open(tmp.name, "w") as file:
file.write(textfsm_template)
with open(tmp.name, "r") as file:
fsm = textfsm.TextFSM(file)
fsm_results = fsm.ParseText(command_response)
info = [dict(zip(fsm.header, row)) for row in fsm_results]
for information in info:
for (key, value) in information.items():
information[key] = value.strip()
return info
def show_config_running(self):
"""Get running configuration (returns unstructured string)
Returns
-------
str
unstructured CLI response to "show config running"
"""
command = "show config running"
config_running = self.send_command(command)
return config_running
def get_hostname(self):
"""Get hostname
Returns
-------
str
access point hostname as defined in running configuration
"""
command = "show config running | i ^hostname"
template = "get_hostname.textfsm"
command_response = self.send_command(command)
hostname_info = self.fsm_parse(command_response, template)
hostname = hostname_info[0]["HOSTNAME"]
return hostname
def show_version(self):
"""Get version information
Returns
-------
dict
PLATFORM, AP model
UPTIME , time since last reboot
"""
command = "show version"
template = "show_version.textfsm"
command_response = self.send_command(command)
version = self.fsm_parse(command_response, template)
return version[0]
def show_cpu(self):
"""Get CPU details
Returns
-------
dict
CPU_TOTAL , current aggregate CPU utilization
CPU_USER , current user CPU utilization
CPU_SYSTEM, current system CPU utilization
"""
command = "show cpu"
template = "show_cpu.textfsm"
command_response = self.send_command(command)
cpu = self.fsm_parse(command_response, template)
return cpu[0]
def show_station(self):
"""Get stations currently associated to this AP
Returns
-------
dict
IFNAME , interface station is associated to
SSID , SSID station is associated to
MAC_ADDR , MAC address of station
IP_ADDR , IP address of station
CHAN , channel station is on
TX_RATE , transmit rate to station
RX_RATE , receive rate from station
POW_SNR , power level (d) and signal-to-noise ratio of station
ASSOC_MODE , association mode of station
CIPHER , cipher mode of station
ASSOC_TIME , association time of station
VLAN , user VLAN of station
AUTH , authentication mode of station
UPID , user profile ID assigned to station
PHYMODE , PHY mode of station
LDPC , LDPC code usage by station
TX_STBC , STBC code usage to station
RX_STBC , STBC code usage from station
SM_PS , Spatial Multiplexing Power Save usage by station
CHAN_WIDTH , channel width in use by station
MUMIMO , MUMIMO usage of station
RELEASE , release state of station
STATION_STATE, state of station
"""
command = "show station"
template = "show_station.textfsm"
command_response = self.send_command(command)
stations = self.fsm_parse(command_response, template)
return stations
def show_lldp_neighbor(self):
"""Get LLDP neighbor information
Returns
-------
dict
PORT_DESC , interface description on LLDP neighbor
SYSTEM_NAME, system name of LLDP neighbor
"""
command = "show lldp neighbor"
template = "show_lldp_neighbor.textfsm"
command_response = self.send_command(command)
lldp_neighbor = self.fsm_parse(command_response, template)
return lldp_neighbor[0]
def show_int_eth(self, interface: str):
"""Get ethernet inferface details
Parameters
----------
interface : str
eth interface #
Returns
-------
dict
DUPLEX, ethernet link duplex
SPEED , ethernet link speed
"""
command = "sh int " + interface
template = "show_eth.textfsm"
command_response = self.send_command(command)
int_eth = self.fsm_parse(command_response, template)
return int_eth[0]
def show_int_wifi(self, interface: str):
"""Get WiFi interface details
Parameters
----------
interface : str
WiFi interface #
Returns
-------
dict
RX_PACKETS , receive packets
RX_ERR , receive errors
RX_DROPS , receive drops
TX_PACKETS , transmit packets
TX_ERR , transmit errors
TX_DROPS , transmit drops
RX_BYTES , receive bytes
TX_BYTES , transmit bytes
RX_AIRTIME_PCT , receive airtime %
TX_AIRTIME_PCT , transmit airtime %
CRC_ERROR_AIRTIME_PCT , CRC error airtime %
TX_UTIL , receive utilization %
RX_UTIL , transmit utilization %
INTERFERENCE_UTIL , interference utilization %
TOTAL_UTIL , total utilization %
RUN_AVG_TX_CU , running average transmit utilization
RUN_AVG_RX_CU , running average receive utilization
RUN_AVG_INTERFERENCE_CU, running average interference utilization
RUN_AVG_NOISE , running average noise utilization
STMA_TX_CU , short time mean average transmit utilization
STMA_RX_CU , short time mean average receive utilization
STMA_INTERFERENCE_CU , short time mean average interference utilization
STMA_NOISE , short time mean average noise utilization
SNAP_TX_CU , snapshot transmit utilization
SNAP_RX_CU , snapshot receive utilization
SNAP_INTERFERENCE_CU , snapshot interference utilization
SNAP_NOISE , snapshot noise utilization
"""
command = "show int " + interface
template = "show_wifi.textfsm"
command_response = self.send_command(command)
int_wifi = self.fsm_parse(command_response, template)
return int_wifi
def show_acsp(self):
"""Get Aerohive Channel Selection Protocol information
Returns
-------
dict
INTERFACE , WiFi interface
CHANNEL_SELECT_STATE, channel select state
PRIMARY_CHANNEL , primary channel
CHANNEL_WIDTH , channel width
POWER_CTRL_STATE , power control state
TX_POWER_DBM , Transmit power in dBm
"""
command = "sh acsp"
template = "show_acsp.textfsm"
command_response = self.send_command(command)
acsp = self.fsm_parse(command_response, template)
return acsp
def show_acsp_neighbor(self):
"""Get ACSP neighbors (other APs this device can hear)
Returns
-------
dict
BSSID , BSSID of neighbor
MODE , PHY of neighbor
SSID , SSID of neighbor
CHANNEL , channel used by neighbor
RSSI , RSSI of neighbor
AEROHIVE , is neighbor an Aerohive device?
CU , current utilization of neighboring Aerohive device
CRC , CRC erros to/from neighboring Aerohive device
STA , stations on neighboring Aerohive device
CHANNEL_WIDTH, channel width of neighbor
"""
command = "show acsp neighbor"
template = "show_acsp_neighbor.textfsm"
command_response = self.send_command(command)
acsp_neighbors = self.fsm_parse(command_response, template)
return acsp_neighbors
def show_boot_param(self):
"""Show boot parameters
Returns
-------
dict
DEVICE_IP
NETMASK
TFTP_SERVER_IP
GATEWAY_IP
VLAN_ID
NATIVE_VLAN_ID
NETBOOT_ALWAYS
NETBOOT
BOOT_FILE
NETDUMP
NETDUMP_FILE
REGION_CODE
COUNTRY_CODE
"""
command = "show boot-param"
template = "show_boot_param.textfsm"
command_response = self.send_command(command)
boot_params = self.fsm_parse(command_response, template)
return boot_params
def show_acsp_channel_info(self):
"""Show ACSP decision details for all radios
Returns
-------
dict
INT
INT_VALUE
STATE
LOWEST_COST_CHANNEL
LOWEST_COST
CHANNEL
CHANNEL_OVERLAP
CHANNEL_COST
"""
command = "show acsp channel-info"
template = "show_acsp_channel_info.textfsm"
command_response = self.send_command(command)
acsp_neighbor_info = self.fsm_parse(command_response, template)
return acsp_neighbor_info
def show_capwap_client(self):
"""Show capwap client information
Returns
-------
dict
CAPWAP_CLIENT
CAPWAP_TRANSPORT_MODE
RUN_STATE
CAPWAP_CLIENT_IP
CAPWAP_SERVER_IP
HIVEMANAGER_PRIMARY_NAME
HIVEMANAGER_BACKUP_NAME
CAPWAP_DEFAULT_SERVER_NAME
VIRTUAL_HIVEMANAGER_NAME
SERVER_DESTINATION_PORT
CAPWAP_SEND_EVENT
CAPWAP_DTLS_STATE
CAPWAP_DTLS_NEGOTIATION
DTLS_NEXT_CONNECT_STATUS
DTLS_ALWAYS_ACCEPT_BOOTSTRAP_PASSPHRASE
DTLS_SESSION_STATUS
DTLS_KEY_TYPE
DTLS_SESSION_CUT_INTERVAL
DTLS_HANDSHAKE_WAIT_INTERVAL
DTLS_MAX_RETRY_COUNT
DTLS_AUTHORIZE_FAILED
DTLS_RECONNECT_COUNT
DISCOVERY_INTERVAL
HEARTBEAT_INTERVAL
MAX_DISCOVERY_INTERVAL
NEIGHBOR_DEAD_INTERVAL
SILENT_INTERVAL
WAIT_JOIN_INTERVAL
DISCOVERY_COUNT
MAX_DISCOVERY_COUNT
RETRANSMIT_COUNT
MAX_RETRANSMIT_COUNT
PRIMARY_SERVER_TRIES
BACKUP_SERVER_TRIES
KEEPALIVES_LOST_SENT
EVENT_PACKET_DROP_DUE_TO_BUFFER_SHORTAGE
EVENT_PACKET_DROP_DUE_TO_LOSS_CONNECTION
"""
command = "show capwap client"
template = "show_capwap_client.textfsm"
command_response = self.send_command(command)
capwap_client = self.fsm_parse(command_response, template)
return capwap_client
def show_console(self):
"""Show console port information
Returns
-------
dict
CONSOLE_LINES , # lines in console output
CONSOLE_TIMEOUT , console timeout (seconds)
SERIAL_STATUS , status of serial port
CONSOLE_OBSCURE_PASSWORDS, obscure console passwords?
"""
command = "show console"
template = "show_console.textfsm"
command_response = self.send_command(command)
console = self.fsm_parse(command_response, template)
return console
def show_dns(self):
"""Show DNS information
Returns
-------
dict
DNS_SERVER_FROM_DHCP
DOMAIN_NAME_SUFFIX
PRIMARY
SECONDARY
TERTIARY
"""
command = "show dns"
template = "show_dns.textfsm"
command_response = self.send_command(command)
dns = self.fsm_parse(command_response, template)
return dns
def show_hivemanager(self):
"""Show HiveManager information
Returns
-------
dict
HM_PRIMARY
HM_BACKUP
HM_CONNECTION
"""
command = "show hivemanager"
template = "show_hivemanager.textfsm"
command_response = self.send_command(command)
hivemanager = self.fsm_parse(command_response, template)
return hivemanager
def show_hw_info(self):
"""Show hardware information
Returns
-------
dict
ETHERNET_MAC_ADDRESS
SERIAL_NUMBER
HARDWARE_REVISION
PRODUCT_NAME
HARDWARE_ID
MANUFACTURING_DATE
NUMBER_OF_MAC_ADDRESSES
MANUFACTURING_VERSION
ANTENNA_ID
AEROHIVE_HARDWARE_KEY
HW_AUTH_DEVICE_STATUS
TPM_STATUS
"""
command = "show hw info"
template = "show_hw_info.textfsm"
command_response = self.send_command(command)
hw_info = self.fsm_parse(command_response, template)
return hw_info
def show_idm(self):
"""Show ID Manager information
Returns
-------
dict
IDM_CLIENT
IDM_PROXY_IP
IDM_PROXY
RADSEC_CERTIFICATE_STATE
RADSEC_CERTIFICATE_ISSUED
RADSEC_CERTIFICATE_EXPIRE
"""
command = "show idm"
template = "show_idm.textfsm"
command_response = self.send_command(command)
idm = self.fsm_parse(command_response, template)
return idm
def show_ip_route(self):
"""Show IP route information
Returns
-------
dict
DESTINATION
GATEWAY
NETMASK
FLAGS
METRIC
REF
USE
IFACE
"""
command = "show ip route"
template = "show_ip_route.textfsm"
command_response = self.send_command(command)
ip_route = self.fsm_parse(command_response, template)
return ip_route
def show_memory(self):
"""Show RAM information
Returns
-------
dict
TOTAL_MEMORY
FREE_MEMORY
USED_MEMORY
"""
command = "show memory"
template = "show_memory.textfsm"
command_response = self.send_command(command)
memory = self.fsm_parse(command_response, template)
return memory
def show_route(self):
"""Show route information
Returns
-------
dict
STA
NHOP
OIF
METRIC
UPID
FLAG
"""
command = "show route"
template = "show_route.textfsm"
command_response = self.send_command(command)
route = self.fsm_parse(command_response, template)
return route
def show_snmp(self):
"""Show SNMP information
Returns
-------
dict
SYSLOCATION
SYSCONTACT
COMMUNITY_NUMBERS
"""
command = "show snmp"
template = "show_snmp.textfsm"
command_response = self.send_command(command)
snmp = self.fsm_parse(command_response, template)
return snmp
def show_ssid(self):
"""Show SSID information
Returns
-------
dict
NO
NAME
FRAG
RTS
DTIM_PERIOD
MAX_CLIENT
MAC_FILTER
"""
command = "show ssid"
template = "show_ssid.textfsm"
command_response = self.send_command(command)
ssid = self.fsm_parse(command_response, template)
return ssid
def show_clock(self):
"""Show AP internal clock
Returns
-------
dict
DATE, date
TIME, time of day
DAY , day of week
"""
command = "show clock"
template = "show_clock.textfsm"
command_response = self.send_command(command)
clock = self.fsm_parse(command_response, template)
return clock
def show_ntp(self):
"""Show NTP information
Returns
-------
dict
STATE
INTERVAL
FIRST
SECOND
THIRD
FOURTH
DST
DST_START
DST_END
"""
command = "show ntp"
template = "show_ntp.textfsm"
command_response = self.send_command(command)
ntp = self.fsm_parse(command_response, template)
return ntp
def show_timezone(self):
"""Show timezone
Returns
-------
str
TIMEZONE
"""
command = "show timezone"
template = "show_timezone.textfsm"
command_response = self.send_command(command)
timezone = self.fsm_parse(command_response, template)
return timezone
Classes
class AP (ip, username, password)
-
Expand source code
class AP: def __init__(self, ip: str, username: str, password: str): self.ip = ip self.password = password self.username = username def connect(self, port=22, verbosity=False): """Establish SSH connection to the access point Parameters ---------- verbosity : bool, optional Toggle verbose SSH connection information, by default False """ switch = { "device_type": "cisco_ios", "ip": self.ip, "username": self.username, "password": self.password, "port": port, "verbose": verbosity, } self.net_connect = netmiko.ConnectHandler(**switch) self.net_connect.find_prompt() self.net_connect.send_command("console page 0") def disconnect(self): return self.net_connect.disconnect() def send_command(self, command: str): """Send CLI command to AP and return raw response Parameters ---------- command : str CLI command to send Returns ------- str raw CLI response """ return self.net_connect.send_command(command) def send_config(self, command_list: list): """Send list of CLI commands to access point Parameters ---------- command_list : list list of CLI commands to send to AP Returns ------- str CLI output resulting from AP """ return self.net_connect.send_config_set(command_list) def fsm_parse(self, command_response: str, template=str): """Get structured data from CLI command response, via textFSM template Parameters ---------- command : str response string from CLI template : str raw textFSM template string or name of predefined template from aeromiko package raw : boolean Returns ------- dict structured data extracted from CLI response """ if template.startswith("Value"): textfsm_template = template else: textfsm_template = pkg_resources.read_text(templates, template) tmp = tempfile.NamedTemporaryFile(delete=False) with open(tmp.name, "w") as file: file.write(textfsm_template) with open(tmp.name, "r") as file: fsm = textfsm.TextFSM(file) fsm_results = fsm.ParseText(command_response) info = [dict(zip(fsm.header, row)) for row in fsm_results] for information in info: for (key, value) in information.items(): information[key] = value.strip() return info def show_config_running(self): """Get running configuration (returns unstructured string) Returns ------- str unstructured CLI response to "show config running" """ command = "show config running" config_running = self.send_command(command) return config_running def get_hostname(self): """Get hostname Returns ------- str access point hostname as defined in running configuration """ command = "show config running | i ^hostname" template = "get_hostname.textfsm" command_response = self.send_command(command) hostname_info = self.fsm_parse(command_response, template) hostname = hostname_info[0]["HOSTNAME"] return hostname def show_version(self): """Get version information Returns ------- dict PLATFORM, AP model UPTIME , time since last reboot """ command = "show version" template = "show_version.textfsm" command_response = self.send_command(command) version = self.fsm_parse(command_response, template) return version[0] def show_cpu(self): """Get CPU details Returns ------- dict CPU_TOTAL , current aggregate CPU utilization CPU_USER , current user CPU utilization CPU_SYSTEM, current system CPU utilization """ command = "show cpu" template = "show_cpu.textfsm" command_response = self.send_command(command) cpu = self.fsm_parse(command_response, template) return cpu[0] def show_station(self): """Get stations currently associated to this AP Returns ------- dict IFNAME , interface station is associated to SSID , SSID station is associated to MAC_ADDR , MAC address of station IP_ADDR , IP address of station CHAN , channel station is on TX_RATE , transmit rate to station RX_RATE , receive rate from station POW_SNR , power level (d) and signal-to-noise ratio of station ASSOC_MODE , association mode of station CIPHER , cipher mode of station ASSOC_TIME , association time of station VLAN , user VLAN of station AUTH , authentication mode of station UPID , user profile ID assigned to station PHYMODE , PHY mode of station LDPC , LDPC code usage by station TX_STBC , STBC code usage to station RX_STBC , STBC code usage from station SM_PS , Spatial Multiplexing Power Save usage by station CHAN_WIDTH , channel width in use by station MUMIMO , MUMIMO usage of station RELEASE , release state of station STATION_STATE, state of station """ command = "show station" template = "show_station.textfsm" command_response = self.send_command(command) stations = self.fsm_parse(command_response, template) return stations def show_lldp_neighbor(self): """Get LLDP neighbor information Returns ------- dict PORT_DESC , interface description on LLDP neighbor SYSTEM_NAME, system name of LLDP neighbor """ command = "show lldp neighbor" template = "show_lldp_neighbor.textfsm" command_response = self.send_command(command) lldp_neighbor = self.fsm_parse(command_response, template) return lldp_neighbor[0] def show_int_eth(self, interface: str): """Get ethernet inferface details Parameters ---------- interface : str eth interface # Returns ------- dict DUPLEX, ethernet link duplex SPEED , ethernet link speed """ command = "sh int " + interface template = "show_eth.textfsm" command_response = self.send_command(command) int_eth = self.fsm_parse(command_response, template) return int_eth[0] def show_int_wifi(self, interface: str): """Get WiFi interface details Parameters ---------- interface : str WiFi interface # Returns ------- dict RX_PACKETS , receive packets RX_ERR , receive errors RX_DROPS , receive drops TX_PACKETS , transmit packets TX_ERR , transmit errors TX_DROPS , transmit drops RX_BYTES , receive bytes TX_BYTES , transmit bytes RX_AIRTIME_PCT , receive airtime % TX_AIRTIME_PCT , transmit airtime % CRC_ERROR_AIRTIME_PCT , CRC error airtime % TX_UTIL , receive utilization % RX_UTIL , transmit utilization % INTERFERENCE_UTIL , interference utilization % TOTAL_UTIL , total utilization % RUN_AVG_TX_CU , running average transmit utilization RUN_AVG_RX_CU , running average receive utilization RUN_AVG_INTERFERENCE_CU, running average interference utilization RUN_AVG_NOISE , running average noise utilization STMA_TX_CU , short time mean average transmit utilization STMA_RX_CU , short time mean average receive utilization STMA_INTERFERENCE_CU , short time mean average interference utilization STMA_NOISE , short time mean average noise utilization SNAP_TX_CU , snapshot transmit utilization SNAP_RX_CU , snapshot receive utilization SNAP_INTERFERENCE_CU , snapshot interference utilization SNAP_NOISE , snapshot noise utilization """ command = "show int " + interface template = "show_wifi.textfsm" command_response = self.send_command(command) int_wifi = self.fsm_parse(command_response, template) return int_wifi def show_acsp(self): """Get Aerohive Channel Selection Protocol information Returns ------- dict INTERFACE , WiFi interface CHANNEL_SELECT_STATE, channel select state PRIMARY_CHANNEL , primary channel CHANNEL_WIDTH , channel width POWER_CTRL_STATE , power control state TX_POWER_DBM , Transmit power in dBm """ command = "sh acsp" template = "show_acsp.textfsm" command_response = self.send_command(command) acsp = self.fsm_parse(command_response, template) return acsp def show_acsp_neighbor(self): """Get ACSP neighbors (other APs this device can hear) Returns ------- dict BSSID , BSSID of neighbor MODE , PHY of neighbor SSID , SSID of neighbor CHANNEL , channel used by neighbor RSSI , RSSI of neighbor AEROHIVE , is neighbor an Aerohive device? CU , current utilization of neighboring Aerohive device CRC , CRC erros to/from neighboring Aerohive device STA , stations on neighboring Aerohive device CHANNEL_WIDTH, channel width of neighbor """ command = "show acsp neighbor" template = "show_acsp_neighbor.textfsm" command_response = self.send_command(command) acsp_neighbors = self.fsm_parse(command_response, template) return acsp_neighbors def show_boot_param(self): """Show boot parameters Returns ------- dict DEVICE_IP NETMASK TFTP_SERVER_IP GATEWAY_IP VLAN_ID NATIVE_VLAN_ID NETBOOT_ALWAYS NETBOOT BOOT_FILE NETDUMP NETDUMP_FILE REGION_CODE COUNTRY_CODE """ command = "show boot-param" template = "show_boot_param.textfsm" command_response = self.send_command(command) boot_params = self.fsm_parse(command_response, template) return boot_params def show_acsp_channel_info(self): """Show ACSP decision details for all radios Returns ------- dict INT INT_VALUE STATE LOWEST_COST_CHANNEL LOWEST_COST CHANNEL CHANNEL_OVERLAP CHANNEL_COST """ command = "show acsp channel-info" template = "show_acsp_channel_info.textfsm" command_response = self.send_command(command) acsp_neighbor_info = self.fsm_parse(command_response, template) return acsp_neighbor_info def show_capwap_client(self): """Show capwap client information Returns ------- dict CAPWAP_CLIENT CAPWAP_TRANSPORT_MODE RUN_STATE CAPWAP_CLIENT_IP CAPWAP_SERVER_IP HIVEMANAGER_PRIMARY_NAME HIVEMANAGER_BACKUP_NAME CAPWAP_DEFAULT_SERVER_NAME VIRTUAL_HIVEMANAGER_NAME SERVER_DESTINATION_PORT CAPWAP_SEND_EVENT CAPWAP_DTLS_STATE CAPWAP_DTLS_NEGOTIATION DTLS_NEXT_CONNECT_STATUS DTLS_ALWAYS_ACCEPT_BOOTSTRAP_PASSPHRASE DTLS_SESSION_STATUS DTLS_KEY_TYPE DTLS_SESSION_CUT_INTERVAL DTLS_HANDSHAKE_WAIT_INTERVAL DTLS_MAX_RETRY_COUNT DTLS_AUTHORIZE_FAILED DTLS_RECONNECT_COUNT DISCOVERY_INTERVAL HEARTBEAT_INTERVAL MAX_DISCOVERY_INTERVAL NEIGHBOR_DEAD_INTERVAL SILENT_INTERVAL WAIT_JOIN_INTERVAL DISCOVERY_COUNT MAX_DISCOVERY_COUNT RETRANSMIT_COUNT MAX_RETRANSMIT_COUNT PRIMARY_SERVER_TRIES BACKUP_SERVER_TRIES KEEPALIVES_LOST_SENT EVENT_PACKET_DROP_DUE_TO_BUFFER_SHORTAGE EVENT_PACKET_DROP_DUE_TO_LOSS_CONNECTION """ command = "show capwap client" template = "show_capwap_client.textfsm" command_response = self.send_command(command) capwap_client = self.fsm_parse(command_response, template) return capwap_client def show_console(self): """Show console port information Returns ------- dict CONSOLE_LINES , # lines in console output CONSOLE_TIMEOUT , console timeout (seconds) SERIAL_STATUS , status of serial port CONSOLE_OBSCURE_PASSWORDS, obscure console passwords? """ command = "show console" template = "show_console.textfsm" command_response = self.send_command(command) console = self.fsm_parse(command_response, template) return console def show_dns(self): """Show DNS information Returns ------- dict DNS_SERVER_FROM_DHCP DOMAIN_NAME_SUFFIX PRIMARY SECONDARY TERTIARY """ command = "show dns" template = "show_dns.textfsm" command_response = self.send_command(command) dns = self.fsm_parse(command_response, template) return dns def show_hivemanager(self): """Show HiveManager information Returns ------- dict HM_PRIMARY HM_BACKUP HM_CONNECTION """ command = "show hivemanager" template = "show_hivemanager.textfsm" command_response = self.send_command(command) hivemanager = self.fsm_parse(command_response, template) return hivemanager def show_hw_info(self): """Show hardware information Returns ------- dict ETHERNET_MAC_ADDRESS SERIAL_NUMBER HARDWARE_REVISION PRODUCT_NAME HARDWARE_ID MANUFACTURING_DATE NUMBER_OF_MAC_ADDRESSES MANUFACTURING_VERSION ANTENNA_ID AEROHIVE_HARDWARE_KEY HW_AUTH_DEVICE_STATUS TPM_STATUS """ command = "show hw info" template = "show_hw_info.textfsm" command_response = self.send_command(command) hw_info = self.fsm_parse(command_response, template) return hw_info def show_idm(self): """Show ID Manager information Returns ------- dict IDM_CLIENT IDM_PROXY_IP IDM_PROXY RADSEC_CERTIFICATE_STATE RADSEC_CERTIFICATE_ISSUED RADSEC_CERTIFICATE_EXPIRE """ command = "show idm" template = "show_idm.textfsm" command_response = self.send_command(command) idm = self.fsm_parse(command_response, template) return idm def show_ip_route(self): """Show IP route information Returns ------- dict DESTINATION GATEWAY NETMASK FLAGS METRIC REF USE IFACE """ command = "show ip route" template = "show_ip_route.textfsm" command_response = self.send_command(command) ip_route = self.fsm_parse(command_response, template) return ip_route def show_memory(self): """Show RAM information Returns ------- dict TOTAL_MEMORY FREE_MEMORY USED_MEMORY """ command = "show memory" template = "show_memory.textfsm" command_response = self.send_command(command) memory = self.fsm_parse(command_response, template) return memory def show_route(self): """Show route information Returns ------- dict STA NHOP OIF METRIC UPID FLAG """ command = "show route" template = "show_route.textfsm" command_response = self.send_command(command) route = self.fsm_parse(command_response, template) return route def show_snmp(self): """Show SNMP information Returns ------- dict SYSLOCATION SYSCONTACT COMMUNITY_NUMBERS """ command = "show snmp" template = "show_snmp.textfsm" command_response = self.send_command(command) snmp = self.fsm_parse(command_response, template) return snmp def show_ssid(self): """Show SSID information Returns ------- dict NO NAME FRAG RTS DTIM_PERIOD MAX_CLIENT MAC_FILTER """ command = "show ssid" template = "show_ssid.textfsm" command_response = self.send_command(command) ssid = self.fsm_parse(command_response, template) return ssid def show_clock(self): """Show AP internal clock Returns ------- dict DATE, date TIME, time of day DAY , day of week """ command = "show clock" template = "show_clock.textfsm" command_response = self.send_command(command) clock = self.fsm_parse(command_response, template) return clock def show_ntp(self): """Show NTP information Returns ------- dict STATE INTERVAL FIRST SECOND THIRD FOURTH DST DST_START DST_END """ command = "show ntp" template = "show_ntp.textfsm" command_response = self.send_command(command) ntp = self.fsm_parse(command_response, template) return ntp def show_timezone(self): """Show timezone Returns ------- str TIMEZONE """ command = "show timezone" template = "show_timezone.textfsm" command_response = self.send_command(command) timezone = self.fsm_parse(command_response, template) return timezone
Methods
def connect(self, port=22, verbosity=False)
-
Establish SSH connection to the access point
Parameters
verbosity
:bool
, optional- Toggle verbose SSH connection information, by default False
Expand source code
def connect(self, port=22, verbosity=False): """Establish SSH connection to the access point Parameters ---------- verbosity : bool, optional Toggle verbose SSH connection information, by default False """ switch = { "device_type": "cisco_ios", "ip": self.ip, "username": self.username, "password": self.password, "port": port, "verbose": verbosity, } self.net_connect = netmiko.ConnectHandler(**switch) self.net_connect.find_prompt() self.net_connect.send_command("console page 0")
def disconnect(self)
-
Expand source code
def disconnect(self): return self.net_connect.disconnect()
def fsm_parse(self, command_response, template=builtins.str)
-
Get structured data from CLI command response, via textFSM template
Parameters
command
:str
- response string from CLI
template
:str
- raw textFSM template string or name of predefined template from aeromiko package
raw
:boolean
Returns
dict
- structured data extracted from CLI response
Expand source code
def fsm_parse(self, command_response: str, template=str): """Get structured data from CLI command response, via textFSM template Parameters ---------- command : str response string from CLI template : str raw textFSM template string or name of predefined template from aeromiko package raw : boolean Returns ------- dict structured data extracted from CLI response """ if template.startswith("Value"): textfsm_template = template else: textfsm_template = pkg_resources.read_text(templates, template) tmp = tempfile.NamedTemporaryFile(delete=False) with open(tmp.name, "w") as file: file.write(textfsm_template) with open(tmp.name, "r") as file: fsm = textfsm.TextFSM(file) fsm_results = fsm.ParseText(command_response) info = [dict(zip(fsm.header, row)) for row in fsm_results] for information in info: for (key, value) in information.items(): information[key] = value.strip() return info
def get_hostname(self)
-
Get hostname
Returns
str
- access point hostname as defined in running configuration
Expand source code
def get_hostname(self): """Get hostname Returns ------- str access point hostname as defined in running configuration """ command = "show config running | i ^hostname" template = "get_hostname.textfsm" command_response = self.send_command(command) hostname_info = self.fsm_parse(command_response, template) hostname = hostname_info[0]["HOSTNAME"] return hostname
def send_command(self, command)
-
Send CLI command to AP and return raw response
Parameters
command
:str
- CLI command to send
Returns
str
- raw CLI response
Expand source code
def send_command(self, command: str): """Send CLI command to AP and return raw response Parameters ---------- command : str CLI command to send Returns ------- str raw CLI response """ return self.net_connect.send_command(command)
def send_config(self, command_list)
-
Send list of CLI commands to access point
Parameters
command_list
:list
- list of CLI commands to send to AP
Returns
str
- CLI output resulting from AP
Expand source code
def send_config(self, command_list: list): """Send list of CLI commands to access point Parameters ---------- command_list : list list of CLI commands to send to AP Returns ------- str CLI output resulting from AP """ return self.net_connect.send_config_set(command_list)
def show_acsp(self)
-
Get Aerohive Channel Selection Protocol information
Returns
dict
- INTERFACE , WiFi interface CHANNEL_SELECT_STATE, channel select state PRIMARY_CHANNEL , primary channel CHANNEL_WIDTH , channel width POWER_CTRL_STATE , power control state TX_POWER_DBM , Transmit power in dBm
Expand source code
def show_acsp(self): """Get Aerohive Channel Selection Protocol information Returns ------- dict INTERFACE , WiFi interface CHANNEL_SELECT_STATE, channel select state PRIMARY_CHANNEL , primary channel CHANNEL_WIDTH , channel width POWER_CTRL_STATE , power control state TX_POWER_DBM , Transmit power in dBm """ command = "sh acsp" template = "show_acsp.textfsm" command_response = self.send_command(command) acsp = self.fsm_parse(command_response, template) return acsp
def show_acsp_channel_info(self)
-
Show ACSP decision details for all radios
Returns
dict
- INT INT_VALUE STATE LOWEST_COST_CHANNEL LOWEST_COST CHANNEL CHANNEL_OVERLAP CHANNEL_COST
Expand source code
def show_acsp_channel_info(self): """Show ACSP decision details for all radios Returns ------- dict INT INT_VALUE STATE LOWEST_COST_CHANNEL LOWEST_COST CHANNEL CHANNEL_OVERLAP CHANNEL_COST """ command = "show acsp channel-info" template = "show_acsp_channel_info.textfsm" command_response = self.send_command(command) acsp_neighbor_info = self.fsm_parse(command_response, template) return acsp_neighbor_info
def show_acsp_neighbor(self)
-
Get ACSP neighbors (other APs this device can hear)
Returns
dict
- BSSID , BSSID of neighbor MODE , PHY of neighbor SSID , SSID of neighbor CHANNEL , channel used by neighbor RSSI , RSSI of neighbor AEROHIVE , is neighbor an Aerohive device? CU , current utilization of neighboring Aerohive device CRC , CRC erros to/from neighboring Aerohive device STA , stations on neighboring Aerohive device CHANNEL_WIDTH, channel width of neighbor
Expand source code
def show_acsp_neighbor(self): """Get ACSP neighbors (other APs this device can hear) Returns ------- dict BSSID , BSSID of neighbor MODE , PHY of neighbor SSID , SSID of neighbor CHANNEL , channel used by neighbor RSSI , RSSI of neighbor AEROHIVE , is neighbor an Aerohive device? CU , current utilization of neighboring Aerohive device CRC , CRC erros to/from neighboring Aerohive device STA , stations on neighboring Aerohive device CHANNEL_WIDTH, channel width of neighbor """ command = "show acsp neighbor" template = "show_acsp_neighbor.textfsm" command_response = self.send_command(command) acsp_neighbors = self.fsm_parse(command_response, template) return acsp_neighbors
def show_boot_param(self)
-
Show boot parameters
Returns
dict
- DEVICE_IP NETMASK TFTP_SERVER_IP GATEWAY_IP VLAN_ID NATIVE_VLAN_ID NETBOOT_ALWAYS NETBOOT BOOT_FILE NETDUMP NETDUMP_FILE REGION_CODE COUNTRY_CODE
Expand source code
def show_boot_param(self): """Show boot parameters Returns ------- dict DEVICE_IP NETMASK TFTP_SERVER_IP GATEWAY_IP VLAN_ID NATIVE_VLAN_ID NETBOOT_ALWAYS NETBOOT BOOT_FILE NETDUMP NETDUMP_FILE REGION_CODE COUNTRY_CODE """ command = "show boot-param" template = "show_boot_param.textfsm" command_response = self.send_command(command) boot_params = self.fsm_parse(command_response, template) return boot_params
def show_capwap_client(self)
-
Show capwap client information
Returns
dict
- CAPWAP_CLIENT CAPWAP_TRANSPORT_MODE RUN_STATE CAPWAP_CLIENT_IP CAPWAP_SERVER_IP HIVEMANAGER_PRIMARY_NAME HIVEMANAGER_BACKUP_NAME CAPWAP_DEFAULT_SERVER_NAME VIRTUAL_HIVEMANAGER_NAME SERVER_DESTINATION_PORT CAPWAP_SEND_EVENT CAPWAP_DTLS_STATE CAPWAP_DTLS_NEGOTIATION DTLS_NEXT_CONNECT_STATUS DTLS_ALWAYS_ACCEPT_BOOTSTRAP_PASSPHRASE DTLS_SESSION_STATUS DTLS_KEY_TYPE DTLS_SESSION_CUT_INTERVAL DTLS_HANDSHAKE_WAIT_INTERVAL DTLS_MAX_RETRY_COUNT DTLS_AUTHORIZE_FAILED DTLS_RECONNECT_COUNT DISCOVERY_INTERVAL HEARTBEAT_INTERVAL MAX_DISCOVERY_INTERVAL NEIGHBOR_DEAD_INTERVAL SILENT_INTERVAL WAIT_JOIN_INTERVAL DISCOVERY_COUNT MAX_DISCOVERY_COUNT RETRANSMIT_COUNT MAX_RETRANSMIT_COUNT PRIMARY_SERVER_TRIES BACKUP_SERVER_TRIES KEEPALIVES_LOST_SENT EVENT_PACKET_DROP_DUE_TO_BUFFER_SHORTAGE EVENT_PACKET_DROP_DUE_TO_LOSS_CONNECTION
Expand source code
def show_capwap_client(self): """Show capwap client information Returns ------- dict CAPWAP_CLIENT CAPWAP_TRANSPORT_MODE RUN_STATE CAPWAP_CLIENT_IP CAPWAP_SERVER_IP HIVEMANAGER_PRIMARY_NAME HIVEMANAGER_BACKUP_NAME CAPWAP_DEFAULT_SERVER_NAME VIRTUAL_HIVEMANAGER_NAME SERVER_DESTINATION_PORT CAPWAP_SEND_EVENT CAPWAP_DTLS_STATE CAPWAP_DTLS_NEGOTIATION DTLS_NEXT_CONNECT_STATUS DTLS_ALWAYS_ACCEPT_BOOTSTRAP_PASSPHRASE DTLS_SESSION_STATUS DTLS_KEY_TYPE DTLS_SESSION_CUT_INTERVAL DTLS_HANDSHAKE_WAIT_INTERVAL DTLS_MAX_RETRY_COUNT DTLS_AUTHORIZE_FAILED DTLS_RECONNECT_COUNT DISCOVERY_INTERVAL HEARTBEAT_INTERVAL MAX_DISCOVERY_INTERVAL NEIGHBOR_DEAD_INTERVAL SILENT_INTERVAL WAIT_JOIN_INTERVAL DISCOVERY_COUNT MAX_DISCOVERY_COUNT RETRANSMIT_COUNT MAX_RETRANSMIT_COUNT PRIMARY_SERVER_TRIES BACKUP_SERVER_TRIES KEEPALIVES_LOST_SENT EVENT_PACKET_DROP_DUE_TO_BUFFER_SHORTAGE EVENT_PACKET_DROP_DUE_TO_LOSS_CONNECTION """ command = "show capwap client" template = "show_capwap_client.textfsm" command_response = self.send_command(command) capwap_client = self.fsm_parse(command_response, template) return capwap_client
def show_clock(self)
-
Show AP internal clock
Returns
dict
- DATE, date TIME, time of day DAY , day of week
Expand source code
def show_clock(self): """Show AP internal clock Returns ------- dict DATE, date TIME, time of day DAY , day of week """ command = "show clock" template = "show_clock.textfsm" command_response = self.send_command(command) clock = self.fsm_parse(command_response, template) return clock
def show_config_running(self)
-
Get running configuration (returns unstructured string)
Returns
str
- unstructured CLI response to "show config running"
Expand source code
def show_config_running(self): """Get running configuration (returns unstructured string) Returns ------- str unstructured CLI response to "show config running" """ command = "show config running" config_running = self.send_command(command) return config_running
def show_console(self)
-
Show console port information
Returns
dict
- CONSOLE_LINES , # lines in console output CONSOLE_TIMEOUT , console timeout (seconds) SERIAL_STATUS , status of serial port CONSOLE_OBSCURE_PASSWORDS, obscure console passwords?
Expand source code
def show_console(self): """Show console port information Returns ------- dict CONSOLE_LINES , # lines in console output CONSOLE_TIMEOUT , console timeout (seconds) SERIAL_STATUS , status of serial port CONSOLE_OBSCURE_PASSWORDS, obscure console passwords? """ command = "show console" template = "show_console.textfsm" command_response = self.send_command(command) console = self.fsm_parse(command_response, template) return console
def show_cpu(self)
-
Get CPU details
Returns
dict
- CPU_TOTAL , current aggregate CPU utilization CPU_USER , current user CPU utilization CPU_SYSTEM, current system CPU utilization
Expand source code
def show_cpu(self): """Get CPU details Returns ------- dict CPU_TOTAL , current aggregate CPU utilization CPU_USER , current user CPU utilization CPU_SYSTEM, current system CPU utilization """ command = "show cpu" template = "show_cpu.textfsm" command_response = self.send_command(command) cpu = self.fsm_parse(command_response, template) return cpu[0]
def show_dns(self)
-
Show DNS information
Returns
dict
- DNS_SERVER_FROM_DHCP DOMAIN_NAME_SUFFIX PRIMARY SECONDARY TERTIARY
Expand source code
def show_dns(self): """Show DNS information Returns ------- dict DNS_SERVER_FROM_DHCP DOMAIN_NAME_SUFFIX PRIMARY SECONDARY TERTIARY """ command = "show dns" template = "show_dns.textfsm" command_response = self.send_command(command) dns = self.fsm_parse(command_response, template) return dns
def show_hivemanager(self)
-
Show HiveManager information
Returns
dict
- HM_PRIMARY HM_BACKUP HM_CONNECTION
Expand source code
def show_hivemanager(self): """Show HiveManager information Returns ------- dict HM_PRIMARY HM_BACKUP HM_CONNECTION """ command = "show hivemanager" template = "show_hivemanager.textfsm" command_response = self.send_command(command) hivemanager = self.fsm_parse(command_response, template) return hivemanager
def show_hw_info(self)
-
Show hardware information
Returns
dict
- ETHERNET_MAC_ADDRESS SERIAL_NUMBER HARDWARE_REVISION PRODUCT_NAME HARDWARE_ID MANUFACTURING_DATE NUMBER_OF_MAC_ADDRESSES MANUFACTURING_VERSION ANTENNA_ID AEROHIVE_HARDWARE_KEY HW_AUTH_DEVICE_STATUS TPM_STATUS
Expand source code
def show_hw_info(self): """Show hardware information Returns ------- dict ETHERNET_MAC_ADDRESS SERIAL_NUMBER HARDWARE_REVISION PRODUCT_NAME HARDWARE_ID MANUFACTURING_DATE NUMBER_OF_MAC_ADDRESSES MANUFACTURING_VERSION ANTENNA_ID AEROHIVE_HARDWARE_KEY HW_AUTH_DEVICE_STATUS TPM_STATUS """ command = "show hw info" template = "show_hw_info.textfsm" command_response = self.send_command(command) hw_info = self.fsm_parse(command_response, template) return hw_info
def show_idm(self)
-
Show ID Manager information
Returns
dict
- IDM_CLIENT IDM_PROXY_IP IDM_PROXY RADSEC_CERTIFICATE_STATE RADSEC_CERTIFICATE_ISSUED RADSEC_CERTIFICATE_EXPIRE
Expand source code
def show_idm(self): """Show ID Manager information Returns ------- dict IDM_CLIENT IDM_PROXY_IP IDM_PROXY RADSEC_CERTIFICATE_STATE RADSEC_CERTIFICATE_ISSUED RADSEC_CERTIFICATE_EXPIRE """ command = "show idm" template = "show_idm.textfsm" command_response = self.send_command(command) idm = self.fsm_parse(command_response, template) return idm
def show_int_eth(self, interface)
-
Get ethernet inferface details
Parameters
interface
:str
- eth interface #
Returns
dict
- DUPLEX, ethernet link duplex SPEED , ethernet link speed
Expand source code
def show_int_eth(self, interface: str): """Get ethernet inferface details Parameters ---------- interface : str eth interface # Returns ------- dict DUPLEX, ethernet link duplex SPEED , ethernet link speed """ command = "sh int " + interface template = "show_eth.textfsm" command_response = self.send_command(command) int_eth = self.fsm_parse(command_response, template) return int_eth[0]
def show_int_wifi(self, interface)
-
Get WiFi interface details
Parameters
interface
:str
- WiFi interface #
Returns
dict
- RX_PACKETS , receive packets RX_ERR , receive errors RX_DROPS , receive drops TX_PACKETS , transmit packets TX_ERR , transmit errors TX_DROPS , transmit drops RX_BYTES , receive bytes TX_BYTES , transmit bytes RX_AIRTIME_PCT , receive airtime % TX_AIRTIME_PCT , transmit airtime % CRC_ERROR_AIRTIME_PCT , CRC error airtime % TX_UTIL , receive utilization % RX_UTIL , transmit utilization % INTERFERENCE_UTIL , interference utilization % TOTAL_UTIL , total utilization % RUN_AVG_TX_CU , running average transmit utilization RUN_AVG_RX_CU , running average receive utilization RUN_AVG_INTERFERENCE_CU, running average interference utilization RUN_AVG_NOISE , running average noise utilization STMA_TX_CU , short time mean average transmit utilization STMA_RX_CU , short time mean average receive utilization STMA_INTERFERENCE_CU , short time mean average interference utilization STMA_NOISE , short time mean average noise utilization SNAP_TX_CU , snapshot transmit utilization SNAP_RX_CU , snapshot receive utilization SNAP_INTERFERENCE_CU , snapshot interference utilization SNAP_NOISE , snapshot noise utilization
Expand source code
def show_int_wifi(self, interface: str): """Get WiFi interface details Parameters ---------- interface : str WiFi interface # Returns ------- dict RX_PACKETS , receive packets RX_ERR , receive errors RX_DROPS , receive drops TX_PACKETS , transmit packets TX_ERR , transmit errors TX_DROPS , transmit drops RX_BYTES , receive bytes TX_BYTES , transmit bytes RX_AIRTIME_PCT , receive airtime % TX_AIRTIME_PCT , transmit airtime % CRC_ERROR_AIRTIME_PCT , CRC error airtime % TX_UTIL , receive utilization % RX_UTIL , transmit utilization % INTERFERENCE_UTIL , interference utilization % TOTAL_UTIL , total utilization % RUN_AVG_TX_CU , running average transmit utilization RUN_AVG_RX_CU , running average receive utilization RUN_AVG_INTERFERENCE_CU, running average interference utilization RUN_AVG_NOISE , running average noise utilization STMA_TX_CU , short time mean average transmit utilization STMA_RX_CU , short time mean average receive utilization STMA_INTERFERENCE_CU , short time mean average interference utilization STMA_NOISE , short time mean average noise utilization SNAP_TX_CU , snapshot transmit utilization SNAP_RX_CU , snapshot receive utilization SNAP_INTERFERENCE_CU , snapshot interference utilization SNAP_NOISE , snapshot noise utilization """ command = "show int " + interface template = "show_wifi.textfsm" command_response = self.send_command(command) int_wifi = self.fsm_parse(command_response, template) return int_wifi
def show_ip_route(self)
-
Show IP route information
Returns
dict
- DESTINATION GATEWAY NETMASK FLAGS METRIC REF USE IFACE
Expand source code
def show_ip_route(self): """Show IP route information Returns ------- dict DESTINATION GATEWAY NETMASK FLAGS METRIC REF USE IFACE """ command = "show ip route" template = "show_ip_route.textfsm" command_response = self.send_command(command) ip_route = self.fsm_parse(command_response, template) return ip_route
def show_lldp_neighbor(self)
-
Get LLDP neighbor information
Returns
dict
- PORT_DESC , interface description on LLDP neighbor SYSTEM_NAME, system name of LLDP neighbor
Expand source code
def show_lldp_neighbor(self): """Get LLDP neighbor information Returns ------- dict PORT_DESC , interface description on LLDP neighbor SYSTEM_NAME, system name of LLDP neighbor """ command = "show lldp neighbor" template = "show_lldp_neighbor.textfsm" command_response = self.send_command(command) lldp_neighbor = self.fsm_parse(command_response, template) return lldp_neighbor[0]
def show_memory(self)
-
Show RAM information
Returns
dict
- TOTAL_MEMORY FREE_MEMORY USED_MEMORY
Expand source code
def show_memory(self): """Show RAM information Returns ------- dict TOTAL_MEMORY FREE_MEMORY USED_MEMORY """ command = "show memory" template = "show_memory.textfsm" command_response = self.send_command(command) memory = self.fsm_parse(command_response, template) return memory
def show_ntp(self)
-
Show NTP information
Returns
dict
- STATE INTERVAL FIRST SECOND THIRD FOURTH DST DST_START DST_END
Expand source code
def show_ntp(self): """Show NTP information Returns ------- dict STATE INTERVAL FIRST SECOND THIRD FOURTH DST DST_START DST_END """ command = "show ntp" template = "show_ntp.textfsm" command_response = self.send_command(command) ntp = self.fsm_parse(command_response, template) return ntp
def show_route(self)
-
Show route information
Returns
dict
- STA NHOP OIF METRIC UPID FLAG
Expand source code
def show_route(self): """Show route information Returns ------- dict STA NHOP OIF METRIC UPID FLAG """ command = "show route" template = "show_route.textfsm" command_response = self.send_command(command) route = self.fsm_parse(command_response, template) return route
def show_snmp(self)
-
Show SNMP information
Returns
dict
- SYSLOCATION SYSCONTACT COMMUNITY_NUMBERS
Expand source code
def show_snmp(self): """Show SNMP information Returns ------- dict SYSLOCATION SYSCONTACT COMMUNITY_NUMBERS """ command = "show snmp" template = "show_snmp.textfsm" command_response = self.send_command(command) snmp = self.fsm_parse(command_response, template) return snmp
def show_ssid(self)
-
Show SSID information
Returns
dict
- NO NAME FRAG RTS DTIM_PERIOD MAX_CLIENT MAC_FILTER
Expand source code
def show_ssid(self): """Show SSID information Returns ------- dict NO NAME FRAG RTS DTIM_PERIOD MAX_CLIENT MAC_FILTER """ command = "show ssid" template = "show_ssid.textfsm" command_response = self.send_command(command) ssid = self.fsm_parse(command_response, template) return ssid
def show_station(self)
-
Get stations currently associated to this AP
Returns
dict
- IFNAME , interface station is associated to SSID , SSID station is associated to MAC_ADDR , MAC address of station IP_ADDR , IP address of station CHAN , channel station is on TX_RATE , transmit rate to station RX_RATE , receive rate from station POW_SNR , power level (d) and signal-to-noise ratio of station ASSOC_MODE , association mode of station CIPHER , cipher mode of station ASSOC_TIME , association time of station VLAN , user VLAN of station AUTH , authentication mode of station UPID , user profile ID assigned to station PHYMODE , PHY mode of station LDPC , LDPC code usage by station TX_STBC , STBC code usage to station RX_STBC , STBC code usage from station SM_PS , Spatial Multiplexing Power Save usage by station CHAN_WIDTH , channel width in use by station MUMIMO , MUMIMO usage of station RELEASE , release state of station STATION_STATE, state of station
Expand source code
def show_station(self): """Get stations currently associated to this AP Returns ------- dict IFNAME , interface station is associated to SSID , SSID station is associated to MAC_ADDR , MAC address of station IP_ADDR , IP address of station CHAN , channel station is on TX_RATE , transmit rate to station RX_RATE , receive rate from station POW_SNR , power level (d) and signal-to-noise ratio of station ASSOC_MODE , association mode of station CIPHER , cipher mode of station ASSOC_TIME , association time of station VLAN , user VLAN of station AUTH , authentication mode of station UPID , user profile ID assigned to station PHYMODE , PHY mode of station LDPC , LDPC code usage by station TX_STBC , STBC code usage to station RX_STBC , STBC code usage from station SM_PS , Spatial Multiplexing Power Save usage by station CHAN_WIDTH , channel width in use by station MUMIMO , MUMIMO usage of station RELEASE , release state of station STATION_STATE, state of station """ command = "show station" template = "show_station.textfsm" command_response = self.send_command(command) stations = self.fsm_parse(command_response, template) return stations
def show_timezone(self)
-
Show timezone
Returns
str
- TIMEZONE
Expand source code
def show_timezone(self): """Show timezone Returns ------- str TIMEZONE """ command = "show timezone" template = "show_timezone.textfsm" command_response = self.send_command(command) timezone = self.fsm_parse(command_response, template) return timezone
def show_version(self)
-
Get version information
Returns
dict
- PLATFORM, AP model UPTIME , time since last reboot
Expand source code
def show_version(self): """Get version information Returns ------- dict PLATFORM, AP model UPTIME , time since last reboot """ command = "show version" template = "show_version.textfsm" command_response = self.send_command(command) version = self.fsm_parse(command_response, template) return version[0]