Exemplo n.º 1
0
    def test_snmp_v2_read_parameters(self):
        snmp_v2_read_parameters = SNMPV2ReadParameters(
            ip=self.IP, snmp_read_community=self.SNMP_READ_COMMUNITY)

        self.assertTrue(snmp_v2_read_parameters.ip == self.IP)
        self.assertTrue(
            snmp_v2_read_parameters.snmp_community == self.SNMP_READ_COMMUNITY)
    def test_quali_snmp_init_with_SNMPV2_read_params(self, cmdgen_mock,
                                                     view_mock):
        # Setup
        result = MagicMock()
        result.prettyPrint.return_value = "response"
        cmdgen_mock.CommandGenerator().getCmd.return_value = "", "", "", [[
            "view", result
        ]]
        cmdgen_mock.CommunityData = lambda x: cmdgen.CommunityData(x)
        ip = "localhost"
        snmp_read_community = 'public'

        view_mock.MibViewController().getNodeLocation.return_value = (
            "SNMPv2-MIB", "sysDescr", "0")

        # Act
        snmp_v2_read_params = SNMPV2ReadParameters(
            ip=ip, snmp_read_community=snmp_read_community)
        test_quali_snmp = quali_snmp.QualiSnmp(
            snmp_parameters=snmp_v2_read_params, logger=self._logger)

        # Assert
        self.assertIsNotNone(test_quali_snmp.security)
        self.assertTrue(
            test_quali_snmp.security.communityName == snmp_read_community)
        self.assertTrue(test_quali_snmp.is_read_only)
    def test_execute_flow_fail_empty_snmp_community(self):
        """ SNMP Community should not be empty """

        snmp_parameters = SNMPV2ReadParameters(ip="127.0.0.1",
                                               snmp_read_community="")

        with self.assertRaisesRegexp(Exception,
                                     "SNMP community cannot be empty"):
            self.tested_instance.execute_flow(snmp_parameters)
 def _get_snmp_parameters(self, action):
     if '3' in self.version:
         return SNMPV3Parameters(ip=self.address, snmp_user=self.user, snmp_password=self.password, snmp_private_key=self.private_key)
     else:
         if action.lower() == 'set':
             # community = self.community_write
             return SNMPV2WriteParameters(ip=self.address, snmp_write_community=self.community_write)
         else:
             # community = self.community_read
             return SNMPV2ReadParameters(ip=self.address, snmp_read_community=self.community_read)
    def test_already_enabled_snmp(self):
        self.session.send_command.side_effect = [
            'Community name: {}'.format(self.SNMP_READ_COMMUNITY),
            'Community name: {}'.format(self.SNMP_READ_COMMUNITY),
        ]

        snmp_v2_read_parameters = SNMPV2ReadParameters(
            self.IP, self.SNMP_READ_COMMUNITY)

        self.enable_flow.execute_flow(snmp_v2_read_parameters)
        self.assertEqual(self.session.send_command.call_count, 2)
    def test_execute_flow_skip_empty_community(self, snmp_actions_class):
        """ Disable SNMP Read Community skipped. SNMP Read Community is Empty """

        snmp_parameters = SNMPV2ReadParameters(ip="127.0.0.1",
                                               snmp_read_community="")
        snmp_actions = mock.MagicMock()
        snmp_actions_class.return_value = snmp_actions

        self.tested_instance.execute_flow(snmp_parameters)
        snmp_actions.disable_snmp_community.assert_not_called()
        snmp_actions.disable_snmp_server.assert_not_called()
Exemplo n.º 7
0
    def test_disable_snmp_read_v2(self):
        self.session.send_command.side_effect = [
            'disabling community',
            'disabled',
        ]

        snmp_v2_read_parameters = SNMPV2ReadParameters(
            self.IP, self.SNMP_READ_COMMUNITY)

        self.disable_flow.execute_flow(snmp_v2_read_parameters)
        self.assertEqual(self.session.send_command.call_count, 2)
Exemplo n.º 8
0
    def test_not_disabled_snmp_community(self):
        self.session.send_command.side_effect = [
            'disabling community',
            'Community name: {}'.format(self.SNMP_READ_COMMUNITY),
        ]

        snmp_v2_read_parameters = SNMPV2ReadParameters(
            self.IP, self.SNMP_READ_COMMUNITY)

        self.assertRaises(
            Exception, self.disable_flow.execute_flow, snmp_v2_read_parameters)
        self.assertEqual(self.session.send_command.call_count, 2)
    def test_disable_snmp_v2_will_raise_exception_in_case_of_empty_snmp_community_string(
            self):
        """Check that method will raise an Exception if snmp_parameters is an empty string"""
        snmp_parameters = SNMPV2ReadParameters(ip="10.10.10.10",
                                               snmp_read_community="")
        cli_service = mock.MagicMock()

        # act
        with self.assertRaisesRegexp(Exception,
                                     "SNMP community can not be empty"):
            self.disable_snmp_flow._disable_snmp_v2(
                cli_service=cli_service, snmp_parameters=snmp_parameters)
 def _get_handler(self, ip, shell_name="", shell_type="", community="public"):
     logger = get_qs_logger(log_file_prefix=ip)
     snmp = QualiSnmp(
         SNMPV2ReadParameters(ip=ip, snmp_read_community=community), logger=logger
     )
     handler = CiscoGenericSNMPAutoload(
         shell_name=shell_name,
         shell_type=shell_type,
         logger=logger,
         snmp_handler=snmp,
         resource_name=ip,
     )
     return handler
    def test_execute_flow_success(self, snmp_actions_class):
        """ SNMP Community already configured """

        test_snmp_community = "snmp_community"

        snmp_parameters = SNMPV2ReadParameters(
            ip="127.0.0.1", snmp_read_community=test_snmp_community)
        snmp_actions = mock.MagicMock()
        snmp_actions_class.return_value = snmp_actions

        self.tested_instance.execute_flow(snmp_parameters)
        snmp_actions.disable_snmp_community.assert_called_once_with(
            test_snmp_community)
        snmp_actions.disable_snmp_server.assert_called_once()
 def _get_handler(self, remove_group=True):
     self.snmp_v2_write_parameters = SNMPV2WriteParameters(
         ip=self.IP, snmp_write_community=self.SNMP_WRITE_COMMUNITY)
     self.snmp_v2_read_parameters = SNMPV2ReadParameters(
         ip=self.IP, snmp_read_community=self.SNMP_READ_COMMUNITY)
     self.snmp_v3_parameters = SNMPV3Parameters(
         ip=self.IP,
         snmp_user=self.SNMP_USER,
         snmp_password=self.SNMP_PASSWORD,
         snmp_private_key=self.SNMP_PRIVATE_KEY)
     cli = MagicMock()
     logger = MagicMock()
     return CiscoDisableSnmpFlow(cli_handler=cli,
                                 logger=logger,
                                 remove_group=remove_group)
    def get_inventory(self, context):
        """
        Discovers the resource structure and attributes.
        :param AutoLoadCommandContext context: the context the command runs on
        :return Attribute and sub-resource information for the Shell resource you can return an AutoLoadDetails object
        :rtype: AutoLoadDetails
        """

        api = get_api(context)
        logger = get_logger_with_thread_id(context)

        snmp_community = api.DecryptPassword(context.resource.attributes["{}.SNMP Read Community".format(self.SHELL_NAME)]).Value
        snmp_params = SNMPV2ReadParameters(context.resource.address, snmp_community)

        response = ZTEGenericSNMPDiscovery(snmp_params, self.SHELL_NAME, self.SHELL_TYPE, context.resource.name, logger).discover()
        return response
    def test_execute_flow_calls_disable_snmp_v2(self):
        """Check that method will call "_disable_snmp_v2" method if snmp_parameters is SNMP v2"""
        snmp_parameters = SNMPV2ReadParameters(
            ip="10.10.10.10", snmp_read_community="cumuluslinux")

        cli_service = mock.MagicMock()
        self.cli_handler.get_cli_service.return_value.__enter__.return_value = cli_service

        self.disable_snmp_flow._disable_snmp_v2 = mock.MagicMock()
        self.disable_snmp_flow._disable_snmp_v3 = mock.MagicMock()

        # act
        self.disable_snmp_flow.execute_flow(snmp_parameters=snmp_parameters)

        # verify
        self.disable_snmp_flow._disable_snmp_v2.assert_called_once_with(
            cli_service=cli_service, snmp_parameters=snmp_parameters)
 def _snmp_parameters(self, action):
     """ Returns the SNMPHandler state variables for the specific action"""
     if self.snmp_version == 'v3':
         return SNMPV3Parameters(ip=self.address,
                                 snmp_user=self.snmp_v3_user,
                                 snmp_password=self.snmp_v3_password,
                                 snmp_private_key=self.snmp_v3_private_key)
     if self.snmp_version.startswith('v2'):
         if action.lower() == 'set':
             return SNMPV2WriteParameters(
                 ip=self.address,
                 snmp_write_community=self.snmp_write_community)
         if action.lower() == 'get':
             return SNMPV2ReadParameters(
                 ip=self.address,
                 snmp_read_community=self.snmp_read_community)
         else:
             ValueError(
                 "Function argument 'action' should be either 'get' or 'set'"
             )
     else:
         ValueError("Unknown SNMP version set on resource")
    def test_execute_flow_success(self, snmp_actions_class):
        """ SNMP Server and SNMP Read Community should be configured """

        test_snmp_community = "new_read_community"

        snmp_parameters = SNMPV2ReadParameters(
            ip="127.0.0.1", snmp_read_community=test_snmp_community)
        snmp_actions = mock.MagicMock()
        snmp_actions_class.return_value = snmp_actions
        snmp_actions.get_current_snmp_info.return_value = """ Status: Disabled
                                                              Contact:
                                                              Location:
                                                              Community(ro): read_community
                                                              Community(rw): write_community

                                                              Max Ifindex per module: 64
                                                          """

        self.tested_instance.execute_flow(snmp_parameters)

        snmp_actions.get_current_snmp_info.assert_called_once()
        snmp_actions.enable_snmp_server.assert_called_once()
        snmp_actions.enable_snmp_community.assert_called_once_with(
            snmp_community=test_snmp_community)
from cloudshell.snmp.quali_snmp import ObjectIdentity, ObjectType, QualiSnmp
from cloudshell.core.logger import qs_logger
from cloudshell.snmp.snmp_parameters import SNMPV2ReadParameters


class SNMP_data():
    def __init__(self, oid, type, value):
        self.oid = oid
        self.type = type
        self.value = value


logger = qs_logger.get_qs_logger()
qsnmp_params = SNMPV2ReadParameters(ip='192.168.105.4',
                                    snmp_read_community='publi')

filename = r"C:\Users\yoav.e\AppData\Roaming\Quali\Recordings\192.168.105.4\192.168.105.4.snmp"
with open(filename, "r") as f:
    all_lines = f.readlines()
snmp_all_data = []
qsnmp_instance = QualiSnmp(snmp_parameters=qsnmp_params, logger=logger)
for line in all_lines:
    split_line = line.split(',')
    snmp_all_data.append(SNMP_data(split_line[0], split_line[1],
                                   split_line[2]))
for q in snmp_all_data:
    Otype = ObjectType(ObjectIdentity(q.oid), q.value)
    Otype.resolveWithMib(qsnmp_instance.mib_viewer)
    print Otype
    pass