Skip to content

Commit

Permalink
Update README headings
Browse files Browse the repository at this point in the history
  • Loading branch information
mpenning committed Jun 30, 2024
1 parent 87d660b commit 3723639
Showing 1 changed file with 27 additions and 33 deletions.
60 changes: 27 additions & 33 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,17 +6,17 @@

[![SonarCloud][51]][52] [![SonarCloud Maintainability Rating][53]][54] [![SonarCloud Lines of Code][55]][56] [![SonarCloud Bugs][59]][60] [![SonarCloud Code Smells][57]][58] [![SonarCloud Tech Debt][61]][62]

## Introduction: What is ciscoconfparse2?
# Introduction: What is ciscoconfparse2?

### Summary
## Summary

[ciscoconfparse2][17] is similar to an advanced grep and diff that
handles **multi-vendor network configuration files** (such as those from
Arista, Cisco, F5, Juniper, Palo Alto, etc); it is the next generation of
[ciscoconfparse][64], which was the primary development package
from 2007 until 2023.

### A ciscoconfparse2 example
## A ciscoconfparse2 example

Assume you have a bunch of interfaces in a configuration. How do you find which ones are shutdown?

Expand All @@ -36,7 +36,7 @@ One way is manually reading the whole Cisco IOS-XE configuration. Another optio
```


### Another ciscoconfparse2 example
## Another ciscoconfparse2 example

Assume you have this IOS-XR bgp configuration:

Expand Down Expand Up @@ -98,17 +98,17 @@ $

There is a lot more possible; see the [tutorial](http://www.pennington.net/py/ciscoconfparse2/tutorial.html).

### CLI Tool
## CLI Tool

[ciscoconfparse2][17] distributes a [CLI tool][67] that will diff and grep various
network configuration or text files.

### API Examples
## API Examples

The API examples are [documented on the web][70]


## Why
# Why

[ciscoconfparse2][17] is a [Python][10] library
that helps you quickly search for questions like these in your
Expand All @@ -133,7 +133,7 @@ complex queries about these relationships.

[![Cisco IOS config: Parent / child][11]][11]

### What changed in ciscoconfparse2?
## What changed in ciscoconfparse2?

In late 2023, I started a rewrite because [ciscoconfparse][64] is too large
and has some defaults that I wish it didn't have. I froze
Expand All @@ -157,7 +157,7 @@ Here's why, it:
- Intentionally requires a different import statement to minimize confusion between the original and [ciscoconfparse2][17]
- Vasly improves Cisco IOS diffs

## Docs
# Docs, Installation, and Dependencies

- The latest copy of the docs are [archived on the web][15]

Expand All @@ -167,24 +167,32 @@ Here's why, it:

python -m pip install ciscoconfparse2

## What is the pythonic way of handling script credentials?

1. Never hard-code credentials
2. Use [python-dotenv](https://github.com/theskumar/python-dotenv)

## Dependencies

## Is this a tool, or is it artwork?
- [Python 3](https://python.org/)
- [attrs](https://github.com/python-attrs/attrs)
- [passlib](https://github.com/glic3rinu/passlib)
- [tomlkit](https://github.com/sdispater/tomlkit)
- [dnspython](https://github.com/rthalley/dnspython)
- [`hier_config`](https://github.com/netdevops/hier_config)
- [`PyYAML`](https://github.com/yaml/pyyaml)
- [`pyparsing`](https://github.com/pyparsing/pyparsing)
- [typeguard](https://github.com/agronholm/typeguard)
- [loguru](https://github.com/Delgan/loguru)

That depends on who you ask. Many companies use CiscoConfParse as part of their
network engineering toolbox; others regard it as a form of artwork.

## Pre-requisites

[The ciscoconfparse2 python package][3] requires Python versions 3.7+.

Type-hinting (work-in-progress) targets Python3.9+ due to the need for `tuple[str, ...]` hints.

## Other Resources
## What is the pythonic way of handling script credentials?

1. Never hard-code credentials
2. Use [python-dotenv](https://github.com/theskumar/python-dotenv)

# Other Resources

- [Dive into Python3](http://www.diveintopython3.net/) is a good way to learn Python
- [Team CYMRU][30] has a [Secure IOS Template][29], which is especially useful for external-facing routers / switches
Expand All @@ -195,7 +203,7 @@ Type-hinting (work-in-progress) targets Python3.9+ due to the need for `tuple[st

I will not. however, if it's truly a problem for your company, there are commercial solutions available (to include purchasing the project, or hiring me).

## Bug Tracker and Support
# Bug Tracker and Support

- Please report any suggestions, bug reports, or annoyances with a [github bug report][24].
- If you\'re having problems with general python issues, consider searching for a solution on [Stack Overflow][33]. If you can\'t find a solution for your problem or need more help, you can [ask on Stack Overflow][34] or [reddit/r/Python][39].
Expand All @@ -205,20 +213,6 @@ I will not. however, if it's truly a problem for your company, there are commerc
- [reddit/r/networking][36]
- [NetworkEngineering.se][23]

## Dependencies

- [Python 3](https://python.org/)
- [attrs](https://github.com/python-attrs/attrs)
- [passlib](https://github.com/glic3rinu/passlib)
- [tomlkit](https://github.com/sdispater/tomlkit)
- [dnspython](https://github.com/rthalley/dnspython)
- [`hier_config`](https://github.com/netdevops/hier_config)
- [`PyYAML`](https://github.com/yaml/pyyaml)
- [`pyparsing`](https://github.com/pyparsing/pyparsing)
- [typeguard](https://github.com/agronholm/typeguard)
- [loguru](https://github.com/Delgan/loguru)


## License and Copyright

[ciscoconfparse2][3] is licensed [GPLv3][21]
Expand Down

0 comments on commit 3723639

Please sign in to comment.