Esempio n. 1
0
class TestDevice(unittest.TestCase):


    def setUp(self):

        # Create device for testing login, connectivity, etc.
        self.device = NetworkDeviceIOS(device_name,device_ip,device_user,device_pw)

    def test_attributes(self):

        print '\n**** Testing device object creation and values ****'

        # Test to make sure that the device object has correct values as set up
        self.assertEqual(self.device.name, device_name, "Incorrect device name")
        self.assertEqual(self.device.ip_address, device_ip, "Incorrect IP address")
        self.assertEqual(self.device.username, device_user, "Incorrect username")
        self.assertEqual(self.device.password, device_pw, "Incorrect password")

    def test_connect(self):

        print '\n**** Testing device object connectivity to real device ****'

        # Test that we can connect to the device (login)
        session = self.device.connect()
        self.assertNotEqual(session, 0, "Failed connection to device")

        self.device.disconnect()  # Clean up the session
def read_devices_info(devices_file):

    devices_list = []

    file = open(devices_file,'r')   # Open the CSV file
    csv_devices = csv.reader(file)  # Create the CSV reader for file

    # Iterate through all devices in our CSV file
    for device_info in csv_devices:

        # Create a device object with this data
        if device_info[1] == 'ios':
 
            device = NetworkDeviceIOS(device_info[0],device_info[2],
                                      device_info[3],device_info[4])

        elif device_info[1] == 'ios-xr':
 
            device = NetworkDeviceXR(device_info[0],device_info[2],
                                     device_info[3],device_info[4])

        else:
            device = NetworkDevice(device_info[0],device_info[2],
                                   device_info[3],device_info[4])

        devices_list.append(device) # Append this device object to list

    return devices_list
Esempio n. 3
0
def read_devices_info(devices_file):

    devices_list = []

    # Open the device file with JSON data and read into string
    json_file = open(devices_file,'r')   # open the JSON file
    json_device_data = json_file.read()  # read in the JSON data from file

    # Convert JSAON string into Python data structure
    devices_info_list = json.loads(json_device_data)

    for device_info in devices_info_list:

        # Create a device object with this data
        if device_info['os'] == 'ios':
 
            device = NetworkDeviceIOS(device_info['name'],device_info['ip'],
                                      device_info['user'],device_info['password'])

        elif device_info['os'] == 'ios-xr':
 
            device = NetworkDeviceXR(device_info['name'],device_info['ip'],
                                     device_info['user'],device_info['password'])

        else:
            device = NetworkDevice(device_info['name'],device_info['ip'],
                                   device_info['user'],device_info['password'])

        devices_list.append(device) # Append this device object to list

    return devices_list
Esempio n. 4
0
def get_device(devices_from_db, device_ip):

    for device_info in devices_from_db:

        # Create a device object with this data
        if device_info[1] == device_ip and device_info[2] == 'ios':
 
            return  NetworkDeviceIOS(device_info[0],device_info[1],
                                      device_info[3],device_info[4])

    return None
Esempio n. 5
0
def read_devices_lista_CSV(devices_file, user, pw):
    logger.info('util: read_devices_lista_CSV  arquivo: %s', devices_file)
    devices_list = []
    try:
        file = open(devices_file, 'r')  # Open the CSV file
        csv_devices = csv.reader(file)  # Create the CSV reader for file

        # Iterate through all devices in our CSV file
        for device_info in csv_devices:
            device = NetworkDeviceIOS(device_info[0], device_info[1], user, pw)
            devices_list.append(device)
        logger.info('util: successful read_devices_lista_CSV  arquivo: %s',
                    devices_file)
        return devices_list
    except Exception as err:
        logger.error('util: read_devices_lista_CSV - Erro ao ler arquivo: %s',
                     devices_file)
        print('Ocorreu um Erro: ' + str(err))
        raise Exception('Erro em util.read_devices_lista_CSV')
Esempio n. 6
0
def read_devices_info(devices_file):

    devices_list = []

    file = open(devices_file, 'r')
    for line in file:

        device_info = line.strip().split(',')

        # Create a device object with this data
        if device_info[1] == 'ios':

            device = NetworkDeviceIOS(device_info[0], device_info[2],
                                      device_info[3], device_info[4])

        else:
            device = NetworkDevice(device_info[0], device_info[2],
                                   device_info[3], device_info[4])

        devices_list.append(device)

    return devices_list
Esempio n. 7
0
def read_devices_filtra_CSV(devices_file, criterio, user, pw):
    logger.info('util: read_devices_filtra_CSV  arquivo: %s', devices_file)
    devices_list = []
    regex_criterio = re.compile(r'%s' % criterio, re.IGNORECASE)
    logger.debug('util: read_devices_filtra_CSV regex: %s', regex_criterio)
    try:
        file = open(devices_file, 'r')  # Open the CSV file
        csv_devices = csv.reader(file)  # Create the CSV reader for file

        # Iterate through all devices in our CSV file
        for device_info in csv_devices:
            if regex_criterio.search(device_info[0]) is not None:
                device = NetworkDeviceIOS(device_info[0], device_info[1], user,
                                          pw)
                devices_list.append(device)
        logger.info('util: successful read_devices_filtra_CSV  arquivo: %s',
                    devices_file)
        return devices_list
    except Exception as err:
        logger.error('util: read_devices_filtra_CSV - Erro ao ler arquivo: %s',
                     devices_file)
        print('Ocorreu um Erro: ' + str(err))
        raise Exception('Erro em util.read_devices_filtra_CSV')
def read_devices_info(devices_file):

    devices_list = []

    # Open the device file with JSON data and read into string
    json_file = open(devices_file,'r')   # open the JSON file
    json_device_data = json_file.read()  # read in the JSON data from file

    # Convert JSAON string into Python data structure
    devices_info_list = json.loads(json_device_data)

    for device_info in devices_info_list:

        # Create a device object with this data
        if device_info['os'] == 'ios':
 
            device = NetworkDeviceIOS(device_info['name'],device_info['ip'],
                                      device_info['user'],device_info['password'])

        elif device_info['os'] == 'ios-xr':
 
            device = NetworkDeviceXR(device_info['name'],device_info['ip'],
                                     device_info['user'],device_info['password'])

        else:
            device = NetworkDevice(device_info['name'],device_info['ip'],
                                   device_info['user'],device_info['password'])

        # Open SSH key file for this device
        key_file_path = "sshkeys/"+device_info['ip']+"/"+device_info['key']
        key_file = open(key_file_path,'rb')

        key_data = key_file.read()    # read ssh key data
        device.set_sshkey(key_data)   # store ssh key data in device object

        devices_list.append(device) # Append this device object to list

    return devices_list
Esempio n. 9
0
devices_filename = 'csv-devices'

logging.basicConfig(filename='prne.log',
                    format='%(asctime)s %(message)s',
                    level=logging.INFO)

devices_list_in = read_devices_info(devices_filename)  # read CSV info for devices

logging.info('main: read %s devices from %s', len(devices_list_in), devices_filename)

# Iterate through all devices from the file, creating device objects for each
devices_list = []
for device_in in devices_list_in:

    device = NetworkDeviceIOS(device_in[0],  # Device name
                              device_in[2],  # Device IP address
                              device_in[3],  # Device username
                              device_in[4])  # Device password
    
    logging.info('main: created device: %s IP: %s', 
                                               device.name, device.ip_address)
    print '----- device: name: ',device.name,' IP: ',device.ip_address

    devices_list.append(device)

# Iterate through all devices, connecting and getting interface and routing info
for device in devices_list:

    session = device.connect()
    if session == 0:
        logging.error('main: unable to connect: %s, %s', 
                                               device.name, device.ip_address)
Esempio n. 10
0
#--- Read in devices from file and put it in a Device List ---------
devices_list_in = read_devices_info(
    devices_filename
)  # read CSV info for all devices from the file "devices_filename" mentioned above

logger.info('read %s devices from %s', len(devices_list_in), devices_filename)

# Iterate through all devices from the file, creating device objects for each

devices_list = []
for device_in in devices_list_in:

    device = NetworkDeviceIOS(
        device_in[0],  # Device name
        device_in[2],  # Device IP address
        device_in[3],  # Device username
        device_in[4])  # Device password

    logger.info('created device: %s IP: %s', device.name, device.ip_address)

    devices_list.append(device)

# Iterate through all devices, connecting and getting interface and routing info
for device in devices_list:

    session = device.connect()
    if session == 0:
        logger.error('unable to connect: %s, %s', device.name,
                     device.ip_address)
        continue
Esempio n. 11
0
    def setUp(self):

        # Create device for testing login, connectivity, etc.
        self.device = NetworkDeviceIOS(device_name,device_ip,device_user,device_pw)
Esempio n. 12
0
class TestDevice(unittest.TestCase):


    def setUp(self):

        # Create device for testing login, connectivity, etc.
        self.device = NetworkDeviceIOS(device_name,device_ip,device_user,device_pw)

    def test_attributes(self):

        print('\n**** Testing device object creation and values ****')

        # Test to make sure that the device object has correct values as set up
        self.assertEqual(self.device.name, device_name, "Incorrect device name")
        self.assertEqual(self.device.ip_address, device_ip, "Incorrect IP address")
        self.assertEqual(self.device.username, device_user, "Incorrect username")
        self.assertEqual(self.device.password, device_pw, "Incorrect password")

    def test_connect(self):

        print('\n**** Testing device object connectivity to real device ****')

        # Test that we can connect to the device (login)
        session = self.device.connect()
        self.assertNotEqual(session, 0, "Failed connection to device")

        self.device.disconnect()  # Clean up the session


    def test_show_interfaces(self):

        print('\n**** Testing device show interfaces command ****')

        # First must connect to the device
        session = self.device.connect()
        self.assertNotEqual(session, 0, "Failed connection to device")

        # Set terminal length to 0 for long replies
        self.assertTrue(self.device.set_terminal_length())

        # Run show interfaces command
        intf_output = self.device.get_interfaces()

        # Test the command ran successfully
        self.assertNotEqual(intf_output, 0, "Failed show interfaces command")

        # Test the data returned from the command
        # Note we test for 'Loopback', which will be present always
        self.assertNotEqual(len(intf_output), 0, "Show interfaces: no data")
        self.assertNotEqual(intf_output.find('Loopback'), -1, 
                                               "Show interfaces: incorrect data")

        self.device.disconnect()  # Clean up the session

    def test_show_routes(self):

        print('\n**** Testing device show routes command ****')

        # First must connect to the device
        session = self.device.connect()
        self.assertNotEqual(session, 0, "Failed connection to device")

        # Set terminal length to 0 for long replies
        self.assertTrue(self.device.set_terminal_length())

        # Run show ip route command
        routes_output = self.device.get_routes()

        # Test the command ran successfully
        self.assertNotEqual(routes_output, 0, "Failed show ip route command")

        # Test the data returned from the command
        # Note we test for 'OSPF' just part of the legend for the command output
        self.assertNotEqual(len(routes_output), 0, "Show ip routes: no data")
        self.assertNotEqual(routes_output.find('OSPF'), -1, 
                                                   "Show ip routes: incorrect data")

        self.device.disconnect()  # Clean up the session

    def tearDown(self):

        pass