macollector


Namemacollector JSON
Version 1.3.1 PyPI version JSON
download
home_pagehttps://github.com/TheZay/Radius_Integration.git
SummaryPython-based tool developed to streamline the collection of MAC addresses from Cisco network switches.
upload_time2024-02-16 20:18:57
maintainer
docs_urlNone
authorNoah Keller
requires_python>=3.8,<4.0
licenseGPL-3.0-or-later
keywords networking cisco mac mac-address switches network automation
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # MACollector: Automated MAC Address Collection Tool

**Author:** Noah Keller  
**Maintainer:** Noah Keller  
**Email:** [nkeller@choctawnation.com](mailto:nkeller@choctawnation.com)

## Introduction

Welcome to `MACollector`, an essential tool for network engineers in the Radius Integration project. This Python utility
streamlines the collection of MAC addresses from network switches and integrates seamlessly with ClearPass for advanced
network access control and management. `MACollector` enhances both efficiency and security in network operations,
eliminating the need for manual data collection.

### What is Radius Integration and ClearPass?

Radius Integration refers to the integration of networked devices with a Radius server for authentication and access
control. ClearPass is a network access control (NAC) solution that uses this information for enhanced security and
management.

## Table of Contents

- [Introduction](#introduction)
- [Key Features](#key-features)
- [System Requirements](#system-requirements)
- [Getting Started](#getting-started)
    - [Installation](#installation)
    - [Configuration](#configuration)
    - [Running the Script](#running-the-script)
- [Usage Guide](#usage-guide)
    - [Input Methods](#input-methods)
    - [Logging and Output](#logging-and-output)
- [Command Line Examples](#command-line-examples)
- [File Format Examples](#file-format-examples)
- [Troubleshooting](#troubleshooting)
    - [Connection Timeout or Failure](#1-connection-timeout-or-failure)
    - [Incorrect MAC Address Data](#2-incorrect-mac-address-data)
    - [XML Export Issues](#3-xml-export-issues)
    - [Dependency Errors](#4-dependency-errors)
    - [Script Execution Errors](#5-script-execution-errors)
- [Feedback and Support](#feedback-and-support)
- [Contribution Guidelines](#contribution-guidelines)
- [Future Plans and Roadmap](#future-plans-and-roadmap)
- [License](#license)

## Description

`MACollector` is a comprehensive Python package for automating the collection of MAC addresses from network switches.
It's designed to simplify network management tasks, particularly in Radius Integration and ClearPass projects.

## Key Features

- Automated MAC address collection from Cisco IOS network devices.
- Supports multiple input methods: file, single IP, IP range, subnet.
- Flexible logging and output options: Export to XML or text files.
- User-friendly: Minimal interaction required, suitable for users unfamiliar with advanced networking tools.

## System Requirements

- Python 3.6 or later ([download here](https://www.python.org/downloads/))
- Dependencies: `netmiko`, `paramiko`, `pyyaml`, `ipaddress` (install via pip)

You can install the dependencies using [pip](https://pip.pypa.io/en/stable/):

```bash
pip install netmiko paramiko pyyaml ipaddress
```

## Getting Started

### Installation

1. **Clone or Download the Repository**:
    - For users familiar with Git, clone the repository using `git clone [repository-url]`.
    - Alternatively, download the ZIP file from the remote repository and extract it on your machine.

2. **Install Python**: Ensure Python 3.6 or newer is installed on your machine.
   Visit [Python's official site](https://www.python.org/downloads/) for installation instructions.

3. **Install Dependencies**: Open a terminal or command prompt and navigate to the script's directory.
   Run `pip install -r requirements.txt` to install necessary dependencies.

### Configuration

The `MACollector` script offers customization through its configuration file, `config.json`, located in the `configs`
directory. This file allows you to set parameters for logging and threading. Below is a description of each configurable
item in `config.json`:

#### `config.json` Explained

```json
{
  "log_file_path": "logs\\macollector.log",
  "logging_level": "INFO",
  "max_threads": 16
}
```

- **log_file_path**: Specifies the file path where the log file will be saved. The default path
  is `"logs\\macollector.log"`.
- **logging_level**: Sets the verbosity level of the logs. Available options
  are `"DEBUG"`, `"INFO"`, `"WARNING"`, `"ERROR"`, and `"CRITICAL"`. The default level is `"INFO"`.
- **max_threads**: Determines the maximum number of threads for concurrent processing of network devices. Adjust this to
  optimize performance based on your system's capabilities. The default is `16`.

#### Customizing Configuration

To tailor the script to your needs, you can edit the `config.json` file with your preferred settings. For instance, if
you require more detailed logs, change `"logging_level"` to `"DEBUG"`. If you are working with a large number of network
devices and your system can support higher concurrency, consider increasing `"max_threads"`.

Ensure that you save the `config.json` file after making changes to apply them the next time you run the script.

## Usage Guide

### Running the Script

Navigate to the `scripts` directory and execute the `macollector.cmd` script:

```bash
# Navigate to the scripts directory
cd scripts

# Run the script with options
./macollector.cmd [options]
```

If you are using Linux or macOS, you can run the `macollector.sh` script instead:

```bash
# Navigate to the scripts directory
cd scripts

# Run the script with options
./macollector.sh [options]
```

Please refer to the [Command Line Examples](#command-line-examples) section for detailed usage examples.

### Options

The script provides several command-line options to customize its behavior:

- `-f FILE, --file FILE`: Use a text file containing IP addresses for processing.
- `-i IP, --ip IP`: Specify a single IP address for processing.
- `-r IP_RANGE, --ip-range IP_RANGE`: Define an IP address range for processing (e.g., 10.1.1.0-10.1.1.127).
- `-s SUBNET, --subnet SUBNET`: Specify a subnet range for processing (e.g., 10.1.1.0/24).
- `--log-file-path LOG_FILE_PATH`: Set a custom path for the log file.
- `--log-level {DEBUG,INFO,WARNING,ERROR,CRITICAL}`: Set the logging level for the console output.

### Input Methods

- **File**: Provide a text or YAML file containing IP addresses.
- **Single IP**: Process a specific IP address.
- **IP Range**: Specify a range of IP addresses.
- **Subnet**: Define a subnet range for processing.

### Logging and Output

- The script's logging behavior can be adjusted in the `config.json` file.
- Collected MAC addresses are exported to either an XML file for integration with ClearPass or a plain text file.

## Command Line Examples

Note that the examples below are for Windows users. If you are using
Linux or macOS, you can run the `macollector.sh` script instead.

```bash
# Process a Single IP Address:
.\macollector.cmd -i 192.168.1.1
```

![Single IP Address](images/single_ip_example.jpg)

```bash
# Process a range of IP Addresses plus a single IP Address:
# Note: The range and single IP are separated by a comma.
#       *If you type a space after the comma, use quotes around the range.*
.\macollector.cmd -r "10.1.1.1, 10.1.1.10-20"
```

![IP Range](images/ip_range_example.jpg)

```bash
# Process a range of IP Addresses:
# Note: The range of IPs can be fully typed out or use shorthand notation as shown in the above example.
.\macollector.cmd -r 10.1.1.10-10.1.1.20
```

![IP Range](images/ip_range_example_2.jpg)

```bash
# Process a Subnet:
.\macollector.cmd -s 192.168.0.0/24  # CIDR Notation
```

![Subnet](images/subnet_example.jpg)

```bash
# Process IP Addresses from a Text File and log to a custom Log File:
.\macollector.cmd -f ip_list.txt --log-file-path custom_log_file_path.log
```

![Text File & Log Path](images/text_file_and_log_path_change.jpg)

```bash
# Change the Console Handler (prints to screen) Log Level to DEBUG
.\macollector.cmd -f ip_list.txt --log-level DEBUG
```

![Text File & Log Level](images/text_file_and_log_level_change.jpg)

```bash
# Process IP Addresses from a YAML File:
.\macollector.cmd -f ip_list.yml
```

![Yaml File](images/yml_file_example.jpg)

```bash
# Process IP Addresses from an Enhanced YAML File:
.\macollector.cmd -f ip_list.yaml
```

![Enhanced Yaml File](images/enhanced_yaml_file_example.jpg)

## File Format Examples

Here's an example of what the text file (`ip_list.txt`) and the YAML file (`inventory.yml`) should look like for the
Switch MAC Collector Script:

### Text Files (`ip_list.txt`)

```text
192.168.1.1
192.168.1.2
192.168.1.3
```

In the text file, each line represents an IP address of a network device. You can add as many IP addresses as needed,
one per line.

### YAML File (`inventory.yml`)

```yaml
hosts:
  - ip: 192.168.1.1
  - ip: 192.168.1.2
  - host: 192.168.1.3
```

In the YAML file, you define a list of hosts under the "hosts" key. Each host in the list should have a "host" key with
its corresponding IP address. You can add or remove hosts as necessary.

### Enhanced YAML File (`inventory.yaml`)

```yaml
hosts:
  - host: Switch1
    ip: 192.168.1.1
  - host: Switch2
    ip: 192.168.1.2
  - host: Switch3
    ip: 192.168.1.3
```

In this enhanced YAML file, you can also specify a "hostname" for each host in addition to the "host" key. This allows
you to associate a friendly name with each IP address, making it easier to identify the devices in your network.

#### YAML File Explained

1. The 'host' key or 'ip' key is required for each entry.
2. The 'host' key is intended for the hostname or fully qualified domain name (FQDN) of the network
   device.
    - The 'host' key may also be used to specify the IP address, but it is recommended to use the 'ip' key for
      clarity and consistency.
    - The hostname is optional and can be omitted as the script will ignore it. However, it can be useful for
      reference and organization.
3. The 'ip' key is used to specify the IP address of the network device.
    - An IP address is **required** for each entry and must be valid for the script to process it.

These files serve as input sources for the Switch MAC Collector Script, allowing you to specify the IP addresses of the
network devices you want to process.

## Troubleshooting

Encountering issues while using the Switch MAC Collector Script? Here are some common problems and their solutions:

### 1. Connection Timeout or Failure

**Problem**: The script fails to connect to a network switch, resulting in a timeout or connection failure error.

**Solution**:

- Check if the IP address of the switch is correct and reachable.
- Ensure that the network device is powered on and connected to the network.
- Verify that the SSH service is enabled on the device.
- Confirm that the username and password entered are correct.

### 2. Incorrect MAC Address Data

**Problem**: The MAC addresses collected do not match expectations or seem incorrect.

**Solution**:

- Ensure that the IP range or subnet specified covers the intended devices.
- Verify that the network devices are configured correctly and are reporting MAC addresses accurately.

### 3. XML Export Issues

**Problem**: The MAC addresses are collected but not properly exported to an XML file.

**Solution**:

- Check the MACollector's write permissions in the directory where the XML file is being saved.
- Ensure the MACollector's configuration for the XML export format is correct.

### 4. Dependency Errors

**Problem**: The MACollector package fails to run due to missing Python dependencies.

**Solution**:

- Make sure Python 3.6 or newer is installed.
- Run `pip install -r requirements.txt` to install all required dependencies, ensuring the `requirements.txt` file
  includes `netmiko`, `paramiko`, and `pyyaml`.

### 5. Script Execution Errors

**Problem**: General errors or unexpected behavior during script execution.

**Solution**:

- Check the console output and log files for error messages.
- Ensure that the latest version of the script is being used.
- Review the command-line arguments to ensure they are correctly formatted.

## Feedback and Support

If your issue is not listed in the [Troubleshooting](#troubleshooting) section or persists after trying the suggested
solutions,
please reach out for support
at [nkeller@choctawnation.com](mailto:nkeller@choctawnation.com). When reporting an issue, include the following details
for a quicker resolution:

- Description of the problem and when it occurs.
- Any error messages or output from the console.
- Steps you've already taken to try and solve the issue.

## Contribution Guidelines

We welcome and encourage contributions from the community to improve this project. To ensure a smooth process, please
follow these guidelines:

1. **Fork the Repository**: Before making any contributions, fork this repository to your GitHub account.

2. **Create a Branch**: For each feature, bug fix, or improvement, create a separate branch in your forked repository.

3. **Commit Changes**: Make your changes and commit them with clear and concise commit messages.

4. **Test**: Ensure that your changes do not introduce new issues and that they align with the project's objectives.

5. **Submit a Pull Request**: Once your changes are ready, submit a pull request to the `dev` branch of this
   repository. Provide a detailed description of your changes and why they are valuable.

6. **Code of Conduct**: Please adhere to our [Code of Conduct](CODE_OF_CONDUCT.md) when participating in this project.

7. **Licensing**: By contributing, you agree that your contributions will be licensed under the same license as this
   project.

8. **Review**: Your pull request will be reviewed by project maintainers. Be prepared to make any necessary adjustments
   based on feedback.

9. **Merge**: Once your pull request is approved, it will be merged into the main repository.

Thank you for contributing to this project and helping make it better for everyone!

## Future Plans and Roadmap

Yes, there are plans to expand and improve this project in the future. Here are some of the ideas in mind:

- Retrying failed connections and error handling for more robust operation.
- Support for additional network device types and vendors.
- Improved logging and output options for more flexibility.
- Support for additional input methods and file formats.
- User interface and interactive mode for easier operation.
- Advanced configuration options for customizing the script's behavior.
- Enhanced security features and best practices for network management.
- Advanced reporting and analytics for network device data collection.
- Enhanced testing and quality assurance for a more stable and reliable tool.

## License

This project is licensed under [GPLv3+](../LICENSE).
See the [LICENSE](../LICENSE) file for more details.

            

Raw data

            {
    "_id": null,
    "home_page": "https://github.com/TheZay/Radius_Integration.git",
    "name": "macollector",
    "maintainer": "",
    "docs_url": null,
    "requires_python": ">=3.8,<4.0",
    "maintainer_email": "",
    "keywords": "networking,cisco,mac,mac-address,switches,network,automation",
    "author": "Noah Keller",
    "author_email": "nkeller@choctawnation.com",
    "download_url": "https://files.pythonhosted.org/packages/be/05/db007a3a2030c5e33db07272d16fdbfe5401a0344a861d485fbf06d2627d/macollector-1.3.1.tar.gz",
    "platform": null,
    "description": "# MACollector: Automated MAC Address Collection Tool\n\n**Author:** Noah Keller  \n**Maintainer:** Noah Keller  \n**Email:** [nkeller@choctawnation.com](mailto:nkeller@choctawnation.com)\n\n## Introduction\n\nWelcome to `MACollector`, an essential tool for network engineers in the Radius Integration project. This Python utility\nstreamlines the collection of MAC addresses from network switches and integrates seamlessly with ClearPass for advanced\nnetwork access control and management. `MACollector` enhances both efficiency and security in network operations,\neliminating the need for manual data collection.\n\n### What is Radius Integration and ClearPass?\n\nRadius Integration refers to the integration of networked devices with a Radius server for authentication and access\ncontrol. ClearPass is a network access control (NAC) solution that uses this information for enhanced security and\nmanagement.\n\n## Table of Contents\n\n- [Introduction](#introduction)\n- [Key Features](#key-features)\n- [System Requirements](#system-requirements)\n- [Getting Started](#getting-started)\n    - [Installation](#installation)\n    - [Configuration](#configuration)\n    - [Running the Script](#running-the-script)\n- [Usage Guide](#usage-guide)\n    - [Input Methods](#input-methods)\n    - [Logging and Output](#logging-and-output)\n- [Command Line Examples](#command-line-examples)\n- [File Format Examples](#file-format-examples)\n- [Troubleshooting](#troubleshooting)\n    - [Connection Timeout or Failure](#1-connection-timeout-or-failure)\n    - [Incorrect MAC Address Data](#2-incorrect-mac-address-data)\n    - [XML Export Issues](#3-xml-export-issues)\n    - [Dependency Errors](#4-dependency-errors)\n    - [Script Execution Errors](#5-script-execution-errors)\n- [Feedback and Support](#feedback-and-support)\n- [Contribution Guidelines](#contribution-guidelines)\n- [Future Plans and Roadmap](#future-plans-and-roadmap)\n- [License](#license)\n\n## Description\n\n`MACollector` is a comprehensive Python package for automating the collection of MAC addresses from network switches.\nIt's designed to simplify network management tasks, particularly in Radius Integration and ClearPass projects.\n\n## Key Features\n\n- Automated MAC address collection from Cisco IOS network devices.\n- Supports multiple input methods: file, single IP, IP range, subnet.\n- Flexible logging and output options: Export to XML or text files.\n- User-friendly: Minimal interaction required, suitable for users unfamiliar with advanced networking tools.\n\n## System Requirements\n\n- Python 3.6 or later ([download here](https://www.python.org/downloads/))\n- Dependencies: `netmiko`, `paramiko`, `pyyaml`, `ipaddress` (install via pip)\n\nYou can install the dependencies using [pip](https://pip.pypa.io/en/stable/):\n\n```bash\npip install netmiko paramiko pyyaml ipaddress\n```\n\n## Getting Started\n\n### Installation\n\n1. **Clone or Download the Repository**:\n    - For users familiar with Git, clone the repository using `git clone [repository-url]`.\n    - Alternatively, download the ZIP file from the remote repository and extract it on your machine.\n\n2. **Install Python**: Ensure Python 3.6 or newer is installed on your machine.\n   Visit [Python's official site](https://www.python.org/downloads/) for installation instructions.\n\n3. **Install Dependencies**: Open a terminal or command prompt and navigate to the script's directory.\n   Run `pip install -r requirements.txt` to install necessary dependencies.\n\n### Configuration\n\nThe `MACollector` script offers customization through its configuration file, `config.json`, located in the `configs`\ndirectory. This file allows you to set parameters for logging and threading. Below is a description of each configurable\nitem in `config.json`:\n\n#### `config.json` Explained\n\n```json\n{\n  \"log_file_path\": \"logs\\\\macollector.log\",\n  \"logging_level\": \"INFO\",\n  \"max_threads\": 16\n}\n```\n\n- **log_file_path**: Specifies the file path where the log file will be saved. The default path\n  is `\"logs\\\\macollector.log\"`.\n- **logging_level**: Sets the verbosity level of the logs. Available options\n  are `\"DEBUG\"`, `\"INFO\"`, `\"WARNING\"`, `\"ERROR\"`, and `\"CRITICAL\"`. The default level is `\"INFO\"`.\n- **max_threads**: Determines the maximum number of threads for concurrent processing of network devices. Adjust this to\n  optimize performance based on your system's capabilities. The default is `16`.\n\n#### Customizing Configuration\n\nTo tailor the script to your needs, you can edit the `config.json` file with your preferred settings. For instance, if\nyou require more detailed logs, change `\"logging_level\"` to `\"DEBUG\"`. If you are working with a large number of network\ndevices and your system can support higher concurrency, consider increasing `\"max_threads\"`.\n\nEnsure that you save the `config.json` file after making changes to apply them the next time you run the script.\n\n## Usage Guide\n\n### Running the Script\n\nNavigate to the `scripts` directory and execute the `macollector.cmd` script:\n\n```bash\n# Navigate to the scripts directory\ncd scripts\n\n# Run the script with options\n./macollector.cmd [options]\n```\n\nIf you are using Linux or macOS, you can run the `macollector.sh` script instead:\n\n```bash\n# Navigate to the scripts directory\ncd scripts\n\n# Run the script with options\n./macollector.sh [options]\n```\n\nPlease refer to the [Command Line Examples](#command-line-examples) section for detailed usage examples.\n\n### Options\n\nThe script provides several command-line options to customize its behavior:\n\n- `-f FILE, --file FILE`: Use a text file containing IP addresses for processing.\n- `-i IP, --ip IP`: Specify a single IP address for processing.\n- `-r IP_RANGE, --ip-range IP_RANGE`: Define an IP address range for processing (e.g., 10.1.1.0-10.1.1.127).\n- `-s SUBNET, --subnet SUBNET`: Specify a subnet range for processing (e.g., 10.1.1.0/24).\n- `--log-file-path LOG_FILE_PATH`: Set a custom path for the log file.\n- `--log-level {DEBUG,INFO,WARNING,ERROR,CRITICAL}`: Set the logging level for the console output.\n\n### Input Methods\n\n- **File**: Provide a text or YAML file containing IP addresses.\n- **Single IP**: Process a specific IP address.\n- **IP Range**: Specify a range of IP addresses.\n- **Subnet**: Define a subnet range for processing.\n\n### Logging and Output\n\n- The script's logging behavior can be adjusted in the `config.json` file.\n- Collected MAC addresses are exported to either an XML file for integration with ClearPass or a plain text file.\n\n## Command Line Examples\n\nNote that the examples below are for Windows users. If you are using\nLinux or macOS, you can run the `macollector.sh` script instead.\n\n```bash\n# Process a Single IP Address:\n.\\macollector.cmd -i 192.168.1.1\n```\n\n![Single IP Address](images/single_ip_example.jpg)\n\n```bash\n# Process a range of IP Addresses plus a single IP Address:\n# Note: The range and single IP are separated by a comma.\n#       *If you type a space after the comma, use quotes around the range.*\n.\\macollector.cmd -r \"10.1.1.1, 10.1.1.10-20\"\n```\n\n![IP Range](images/ip_range_example.jpg)\n\n```bash\n# Process a range of IP Addresses:\n# Note: The range of IPs can be fully typed out or use shorthand notation as shown in the above example.\n.\\macollector.cmd -r 10.1.1.10-10.1.1.20\n```\n\n![IP Range](images/ip_range_example_2.jpg)\n\n```bash\n# Process a Subnet:\n.\\macollector.cmd -s 192.168.0.0/24  # CIDR Notation\n```\n\n![Subnet](images/subnet_example.jpg)\n\n```bash\n# Process IP Addresses from a Text File and log to a custom Log File:\n.\\macollector.cmd -f ip_list.txt --log-file-path custom_log_file_path.log\n```\n\n![Text File & Log Path](images/text_file_and_log_path_change.jpg)\n\n```bash\n# Change the Console Handler (prints to screen) Log Level to DEBUG\n.\\macollector.cmd -f ip_list.txt --log-level DEBUG\n```\n\n![Text File & Log Level](images/text_file_and_log_level_change.jpg)\n\n```bash\n# Process IP Addresses from a YAML File:\n.\\macollector.cmd -f ip_list.yml\n```\n\n![Yaml File](images/yml_file_example.jpg)\n\n```bash\n# Process IP Addresses from an Enhanced YAML File:\n.\\macollector.cmd -f ip_list.yaml\n```\n\n![Enhanced Yaml File](images/enhanced_yaml_file_example.jpg)\n\n## File Format Examples\n\nHere's an example of what the text file (`ip_list.txt`) and the YAML file (`inventory.yml`) should look like for the\nSwitch MAC Collector Script:\n\n### Text Files (`ip_list.txt`)\n\n```text\n192.168.1.1\n192.168.1.2\n192.168.1.3\n```\n\nIn the text file, each line represents an IP address of a network device. You can add as many IP addresses as needed,\none per line.\n\n### YAML File (`inventory.yml`)\n\n```yaml\nhosts:\n  - ip: 192.168.1.1\n  - ip: 192.168.1.2\n  - host: 192.168.1.3\n```\n\nIn the YAML file, you define a list of hosts under the \"hosts\" key. Each host in the list should have a \"host\" key with\nits corresponding IP address. You can add or remove hosts as necessary.\n\n### Enhanced YAML File (`inventory.yaml`)\n\n```yaml\nhosts:\n  - host: Switch1\n    ip: 192.168.1.1\n  - host: Switch2\n    ip: 192.168.1.2\n  - host: Switch3\n    ip: 192.168.1.3\n```\n\nIn this enhanced YAML file, you can also specify a \"hostname\" for each host in addition to the \"host\" key. This allows\nyou to associate a friendly name with each IP address, making it easier to identify the devices in your network.\n\n#### YAML File Explained\n\n1. The 'host' key or 'ip' key is required for each entry.\n2. The 'host' key is intended for the hostname or fully qualified domain name (FQDN) of the network\n   device.\n    - The 'host' key may also be used to specify the IP address, but it is recommended to use the 'ip' key for\n      clarity and consistency.\n    - The hostname is optional and can be omitted as the script will ignore it. However, it can be useful for\n      reference and organization.\n3. The 'ip' key is used to specify the IP address of the network device.\n    - An IP address is **required** for each entry and must be valid for the script to process it.\n\nThese files serve as input sources for the Switch MAC Collector Script, allowing you to specify the IP addresses of the\nnetwork devices you want to process.\n\n## Troubleshooting\n\nEncountering issues while using the Switch MAC Collector Script? Here are some common problems and their solutions:\n\n### 1. Connection Timeout or Failure\n\n**Problem**: The script fails to connect to a network switch, resulting in a timeout or connection failure error.\n\n**Solution**:\n\n- Check if the IP address of the switch is correct and reachable.\n- Ensure that the network device is powered on and connected to the network.\n- Verify that the SSH service is enabled on the device.\n- Confirm that the username and password entered are correct.\n\n### 2. Incorrect MAC Address Data\n\n**Problem**: The MAC addresses collected do not match expectations or seem incorrect.\n\n**Solution**:\n\n- Ensure that the IP range or subnet specified covers the intended devices.\n- Verify that the network devices are configured correctly and are reporting MAC addresses accurately.\n\n### 3. XML Export Issues\n\n**Problem**: The MAC addresses are collected but not properly exported to an XML file.\n\n**Solution**:\n\n- Check the MACollector's write permissions in the directory where the XML file is being saved.\n- Ensure the MACollector's configuration for the XML export format is correct.\n\n### 4. Dependency Errors\n\n**Problem**: The MACollector package fails to run due to missing Python dependencies.\n\n**Solution**:\n\n- Make sure Python 3.6 or newer is installed.\n- Run `pip install -r requirements.txt` to install all required dependencies, ensuring the `requirements.txt` file\n  includes `netmiko`, `paramiko`, and `pyyaml`.\n\n### 5. Script Execution Errors\n\n**Problem**: General errors or unexpected behavior during script execution.\n\n**Solution**:\n\n- Check the console output and log files for error messages.\n- Ensure that the latest version of the script is being used.\n- Review the command-line arguments to ensure they are correctly formatted.\n\n## Feedback and Support\n\nIf your issue is not listed in the [Troubleshooting](#troubleshooting) section or persists after trying the suggested\nsolutions,\nplease reach out for support\nat [nkeller@choctawnation.com](mailto:nkeller@choctawnation.com). When reporting an issue, include the following details\nfor a quicker resolution:\n\n- Description of the problem and when it occurs.\n- Any error messages or output from the console.\n- Steps you've already taken to try and solve the issue.\n\n## Contribution Guidelines\n\nWe welcome and encourage contributions from the community to improve this project. To ensure a smooth process, please\nfollow these guidelines:\n\n1. **Fork the Repository**: Before making any contributions, fork this repository to your GitHub account.\n\n2. **Create a Branch**: For each feature, bug fix, or improvement, create a separate branch in your forked repository.\n\n3. **Commit Changes**: Make your changes and commit them with clear and concise commit messages.\n\n4. **Test**: Ensure that your changes do not introduce new issues and that they align with the project's objectives.\n\n5. **Submit a Pull Request**: Once your changes are ready, submit a pull request to the `dev` branch of this\n   repository. Provide a detailed description of your changes and why they are valuable.\n\n6. **Code of Conduct**: Please adhere to our [Code of Conduct](CODE_OF_CONDUCT.md) when participating in this project.\n\n7. **Licensing**: By contributing, you agree that your contributions will be licensed under the same license as this\n   project.\n\n8. **Review**: Your pull request will be reviewed by project maintainers. Be prepared to make any necessary adjustments\n   based on feedback.\n\n9. **Merge**: Once your pull request is approved, it will be merged into the main repository.\n\nThank you for contributing to this project and helping make it better for everyone!\n\n## Future Plans and Roadmap\n\nYes, there are plans to expand and improve this project in the future. Here are some of the ideas in mind:\n\n- Retrying failed connections and error handling for more robust operation.\n- Support for additional network device types and vendors.\n- Improved logging and output options for more flexibility.\n- Support for additional input methods and file formats.\n- User interface and interactive mode for easier operation.\n- Advanced configuration options for customizing the script's behavior.\n- Enhanced security features and best practices for network management.\n- Advanced reporting and analytics for network device data collection.\n- Enhanced testing and quality assurance for a more stable and reliable tool.\n\n## License\n\nThis project is licensed under [GPLv3+](../LICENSE).\nSee the [LICENSE](../LICENSE) file for more details.\n",
    "bugtrack_url": null,
    "license": "GPL-3.0-or-later",
    "summary": "Python-based tool developed to streamline the collection of MAC addresses from Cisco network switches.",
    "version": "1.3.1",
    "project_urls": {
        "Bug Tracker": "https://github.com/TheZay/Radius_Integration/issues",
        "Documentation": "https://github.com/TheZay/Radius_Integration/tree/main/docs",
        "Homepage": "https://github.com/TheZay/Radius_Integration.git",
        "Repository": "https://github.com/TheZay/Radius_Integration.git"
    },
    "split_keywords": [
        "networking",
        "cisco",
        "mac",
        "mac-address",
        "switches",
        "network",
        "automation"
    ],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "da3f06592127a570b3f2836a3ad7da26490b856cec2f463eea3a97ff018ddf27",
                "md5": "fcf988d0c7dbfb2755d00bdb95c6b5a3",
                "sha256": "dcc47ff7d86d852593582d7d1924c0d0e4728f7ef1d42cf14356a7198ac68cb1"
            },
            "downloads": -1,
            "filename": "macollector-1.3.1-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "fcf988d0c7dbfb2755d00bdb95c6b5a3",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.8,<4.0",
            "size": 36023,
            "upload_time": "2024-02-16T20:18:55",
            "upload_time_iso_8601": "2024-02-16T20:18:55.692816Z",
            "url": "https://files.pythonhosted.org/packages/da/3f/06592127a570b3f2836a3ad7da26490b856cec2f463eea3a97ff018ddf27/macollector-1.3.1-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "be05db007a3a2030c5e33db07272d16fdbfe5401a0344a861d485fbf06d2627d",
                "md5": "2e7021810d6a6debf051c5823586301b",
                "sha256": "b6d80495833169363405e653eb971bba044e5af6fbb8b5c5f20d605826f7d0ef"
            },
            "downloads": -1,
            "filename": "macollector-1.3.1.tar.gz",
            "has_sig": false,
            "md5_digest": "2e7021810d6a6debf051c5823586301b",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.8,<4.0",
            "size": 36848,
            "upload_time": "2024-02-16T20:18:57",
            "upload_time_iso_8601": "2024-02-16T20:18:57.680366Z",
            "url": "https://files.pythonhosted.org/packages/be/05/db007a3a2030c5e33db07272d16fdbfe5401a0344a861d485fbf06d2627d/macollector-1.3.1.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2024-02-16 20:18:57",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "TheZay",
    "github_project": "Radius_Integration",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": false,
    "requirements": [],
    "lcname": "macollector"
}
        
Elapsed time: 0.18841s