def enter_enable_mode(session): session.hardware_expect( 'enable', re_string=DEFAULT_PROMPT + '|' + ENABLE_PROMPT, expect_map={ '[Pp]assword': lambda session: session.send_line( get_attribute_by_name_wrapper('Enable Password')()) }) # get_decrypted_password_by_attribute_name_wrapper('Enable Password')())}) result = session.hardware_expect('', re_string=r"{}|{}".format( DEFAULT_PROMPT, ENABLE_PROMPT)) if not re.search(ENABLE_PROMPT, result): raise Exception('enter_enable_mode', 'Enable password is incorrect') return result
from cloudshell.shell.core.context_utils import get_attribute_by_name_wrapper, get_resource_address, \ get_decrypted_password_by_attribute_name_wrapper """Session types implemented in current package""" CONNECTION_TYPE_SSH = 'ssh' CONNECTION_TYPE_TELNET = 'telnet' CONNECTION_TYPE_TCP = 'tcp' CONNECTION_TYPE_AUTO = 'auto' """Connection map, defines SessionCreator objects which used for session creation""" CONNECTION_MAP = OrderedDict() """Definition for SSH session""" ssh_session = SessionCreator(SSHSession) ssh_session.proxy = ReturnToPoolProxy ssh_session.kwargs = {'username': get_attribute_by_name_wrapper('User'), 'password': get_decrypted_password_by_attribute_name_wrapper('Password'), 'host': get_resource_address, 'port': get_attribute_by_name_wrapper('CLI TCP Port')} CONNECTION_MAP[CONNECTION_TYPE_SSH] = ssh_session """Definition for TCP session""" tcp_session = SessionCreator(TCPSession) tcp_session.proxy = ReturnToPoolProxy tcp_session.kwargs = {'host': get_resource_address, 'port': get_attribute_by_name_wrapper('CLI TCP Port')} CONNECTION_MAP[CONNECTION_TYPE_TCP] = tcp_session """Definition for Telnet session""" telnet_session = SessionCreator(TelnetSession) telnet_session.proxy = ReturnToPoolProxy telnet_session.kwargs = {'username': get_attribute_by_name_wrapper('User'),
"""Definition for SSH session""" from collections import OrderedDict from cloudshell.cli.session.session_creator import SessionCreator from cloudshell.cli.session.session_proxy import ReturnToPoolProxy from cloudshell.cli.session.telnet_session import TelnetSession from cloudshell.configuration.cloudshell_cli_configuration import CONNECTION_TYPE_SSH, CONNECTION_TYPE_TELNET from cloudshell.networking.cisco.aireos.cli.aireos_ssh_session import AireOSSSHSession from cloudshell.shell.core.context_utils import get_attribute_by_name_wrapper, get_resource_address, \ get_attribute_by_name from cloudshell.configuration.cloudshell_cli_configuration import CONNECTION_MAP ssh_session = SessionCreator(AireOSSSHSession) ssh_session.proxy = ReturnToPoolProxy ssh_session.kwargs = { 'username': get_attribute_by_name_wrapper('User'), 'password': get_attribute_by_name_wrapper('Password'), 'host': get_resource_address } CONNECTION_MAP[CONNECTION_TYPE_SSH] = ssh_session CONNECTION_EXPECTED_MAP = OrderedDict({ r'[Uu]ser:': lambda session: session.send_line(get_attribute_by_name('User')), r'[Pp]assword:': lambda session: session.send_line(get_attribute_by_name('Password')) }) """Definition for Telnet session""" telnet_session = SessionCreator(TelnetSession) telnet_session.proxy = ReturnToPoolProxy telnet_session.kwargs = {
from collections import OrderedDict from cloudshell.cli.session.session_creator import SessionCreator from cloudshell.cli.session.session_proxy import ReturnToPoolProxy from cloudshell.configuration.cloudshell_cli_configuration import CONNECTION_TYPE_SSH from cloudshell.networking.cisco.aireos.cli.aireos_ssh_session import AireOSSSHSession from cloudshell.shell.core.context_utils import get_attribute_by_name_wrapper, \ get_resource_address, get_attribute_by_name, get_decrypted_password_by_attribute_name_wrapper from cloudshell.shell.core.dependency_injection.context_based_logger import get_logger_with_thread_id from cloudshell.configuration.cloudshell_cli_configuration import CONNECTION_MAP """Definition for SSH session""" ssh_session = SessionCreator(AireOSSSHSession) ssh_session.proxy = ReturnToPoolProxy ssh_session.kwargs = {'username': get_attribute_by_name_wrapper('User'), 'password': get_decrypted_password_by_attribute_name_wrapper('Password'), 'host': get_resource_address} CONNECTION_MAP[CONNECTION_TYPE_SSH] = ssh_session CONNECTION_EXPECTED_MAP = OrderedDict({r'[Uu]ser:': lambda session: session.send_line(get_attribute_by_name('User')), r'[Pp]assword:': lambda session: session.send_line( get_decrypted_password_by_attribute_name_wrapper('Password')())}) GET_LOGGER_FUNCTION = get_logger_with_thread_id DEFAULT_PROMPT = r'[>$#]\s*$' CONFIG_MODE_PROMPT = DEFAULT_PROMPT ENTER_CONFIG_MODE_PROMPT_COMMAND = '' EXIT_CONFIG_MODE_PROMPT_COMMAND = ''
ERROR_MAP = OrderedDict( {r'[Ee]rror\s+saving\s+configuration': 'Save configuration error', r'syntax\s+error': 'Command syntax error', r'[Uu]nknown\s+command': 'Unknown command', r'[Ee]rror:\s+configuration\s+check-out\s+failed': 'Configuration checkout failed', r'ERROR:': 'Error, see logs for more details', r'[Ee]rror\s+.+': 'Error, see logs for more details'}) DEFAULT_PROMPT = '[%>#]\s*$|[%>#]\s*\n' CONFIG_MODE_PROMPT = r'.*#\s*$' SNMP_ERRORS = [r'No\s+Such\s+Object\s+currently\s+exists'] """Dictionary used for snmp handler initialization""" QUALISNMP_INIT_PARAMS = {'ip': get_resource_address, 'snmp_version': get_attribute_by_name_wrapper('SNMP Version'), 'snmp_user': get_attribute_by_name_wrapper('SNMP V3 User'), 'snmp_password': get_attribute_by_name_wrapper('SNMP V3 Password'), 'snmp_community': get_attribute_by_name_wrapper('SNMP Read Community'), 'snmp_private_key': get_attribute_by_name_wrapper('SNMP V3 Private Key'), 'snmp_errors': SNMP_ERRORS} def create_snmp_handler(): """ Factory function which creates CachedSnmpHandler :return: """ kwargs = {} for key, value in QUALISNMP_INIT_PARAMS.iteritems(): if callable(value):
from weakref import WeakKeyDictionary from threading import current_thread # from cloudshell.cli.session.session_creator import SessionCreator # from cloudshell.cli.session.session_validation_proxy import SessionValidationProxy # from cloudshell.cli.session.session_proxy import ReturnToPoolProxy from cloudshell.cli.session.ssh_session import SSHSession from cloudshell.cli.session.telnet_session import TelnetSession # from cloudshell.configuration.cloudshell_cli_configuration import CONNECTION_MAP, CONNECTION_TYPE_SSH, \ # CONNECTION_TYPE_TELNET from cloudshell.shell.core.context_utils import get_resource_address, get_attribute_by_name_wrapper from cloudshell.snmp.quali_snmp import QualiSnmp from cloudshell.snmp.quali_snmp_cached import QualiSnmpCached QUALISNMP_INIT_PARAMS = {'ip': get_resource_address, 'snmp_version': get_attribute_by_name_wrapper('SNMP Version'), 'snmp_user': get_attribute_by_name_wrapper('SNMP V3 User'), 'snmp_password': get_attribute_by_name_wrapper('SNMP V3 Password'), 'snmp_community': get_attribute_by_name_wrapper('SNMP Read Community'), 'snmp_private_key': get_attribute_by_name_wrapper('SNMP V3 Private Key')} # file_path = '/tmp/_juniper_snmp_cache' # file_path = '/tmp/_junos_SRX_220' # file_path = '' class SaveCachedChanges(QualiSnmpCached): def __init__(self, *args, **kwargs): super(SaveCachedChanges, self).__init__(*args, **kwargs) # try:
"""Definition for SSH session""" from collections import OrderedDict from cloudshell.cli.session.session_creator import SessionCreator from cloudshell.cli.session.session_proxy import ReturnToPoolProxy from cloudshell.cli.session.telnet_session import TelnetSession from cloudshell.configuration.cloudshell_cli_configuration import CONNECTION_TYPE_SSH, CONNECTION_TYPE_TELNET from cloudshell.networking.cisco.aireos.cli.aireos_ssh_session import AireOSSSHSession from cloudshell.shell.core.context_utils import get_attribute_by_name_wrapper, get_resource_address, \ get_attribute_by_name from cloudshell.configuration.cloudshell_cli_configuration import CONNECTION_MAP ssh_session = SessionCreator(AireOSSSHSession) ssh_session.proxy = ReturnToPoolProxy ssh_session.kwargs = {'username': get_attribute_by_name_wrapper('User'), 'password': get_attribute_by_name_wrapper('Password'), 'host': get_resource_address} CONNECTION_MAP[CONNECTION_TYPE_SSH] = ssh_session CONNECTION_EXPECTED_MAP = OrderedDict({r'[Uu]ser:': lambda session: session.send_line(get_attribute_by_name('User')), r'[Pp]assword:': lambda session: session.send_line( get_attribute_by_name('Password'))}) """Definition for Telnet session""" telnet_session = SessionCreator(TelnetSession) telnet_session.proxy = ReturnToPoolProxy telnet_session.kwargs = {'username': get_attribute_by_name_wrapper('User'), # 'password': get_decrypted_password_by_attribute_name_wrapper('Password'), 'password': get_attribute_by_name_wrapper('Password'), 'host': get_resource_address} CONNECTION_MAP[CONNECTION_TYPE_TELNET] = telnet_session