Execution module for ciscoconfparse
New in version 2019.2.0.
This module can be used for basic configuration parsing, audit or validation
for a variety of network platforms having Cisco IOS style configuration (one
space indentation), including: Cisco IOS, Cisco Nexus, Cisco IOS-XR,
Cisco IOS-XR, Cisco ASA, Arista EOS, Brocade, HP Switches, Dell PowerConnect
Switches, or Extreme Networks devices. In newer versions, ciscoconfparse
provides support for brace-delimited configuration style as well, for platforms
such as: Juniper Junos, Palo Alto, or F5 Networks.
See http://www.pennington.net/py/ciscoconfparse/index.html for further details.
ciscoconfparse
This module depends on the Python library with the same name,
ciscoconfparse
- to install execute: pip install ciscoconfparse
.
Return a list of detailed matches, for the configuration blocks (parent-child
relationship) whose parent respects the regular expressions configured via
the parent_regex
argument, and the child matches the child_regex
regular expression. The result is a list of dictionaries with the following
keys:
match
: a boolean value that tells whether child_regex
matched any
children lines.
parent
: the parent line (as text).
child
: the child line (as text). If no child line matched, this field
will be None
.
Note that the return list contains the elements that matched the parent
condition, the parent_regex
regular expression. Therefore, the parent
field will always have a valid value, while match
and child
may
default to False
and None
respectively when there is not child match.
CLI Example:
salt '*' ciscoconfparse.filter_lines config_path=https://bit.ly/2mAdq7z parent_regex='Gigabit' child_regex='shutdown'
Example output (for the example above):
[
{
'parent': 'interface GigabitEthernet1',
'match': False,
'child': None
},
{
'parent': 'interface GigabitEthernet2',
'match': True,
'child': ' shutdown'
},
{
'parent': 'interface GigabitEthernet3',
'match': True,
'child': ' shutdown'
}
]
Return all the lines (as text) that match the expression in the regex
argument.
The configuration sent as text.
Note
This argument is ignored when config_path
is specified.
The absolute or remote path to the file with the configuration to be
parsed. This argument supports the usual Salt filesystem URIs, e.g.,
salt://
, https://
, ftp://
, s3://
, etc.
The regular expression to match the lines against.
base
Salt fileserver environment from which to retrieve the file. This
argument is ignored when config_path
is not a salt://
URL.
CLI Example:
salt '*' ciscoconfparse.find_lines config_path=https://bit.ly/2mAdq7z regex='ip address'
Output example:
cisco-ios-router:
- ip address dhcp
- ip address 172.20.0.1 255.255.255.0
- no ip address
Return a list of parent lines (as text) matching the regular expression
parent_regex
that have children lines matching child_regex
.
The configuration sent as text.
Note
This argument is ignored when config_path
is specified.
The absolute or remote path to the file with the configuration to be
parsed. This argument supports the usual Salt filesystem URIs, e.g.,
salt://
, https://
, ftp://
, s3://
, etc.
The regular expression to match the parent lines against.
The regular expression to match the child lines against.
False
Whether to ignore the white spaces.
base
Salt fileserver environment from which to retrieve the file. This
argument is ignored when config_path
is not a salt://
URL.
CLI Example:
salt '*' ciscoconfparse.find_lines_w_child config_path=https://bit.ly/2mAdq7z parent_line='line con' child_line='stopbits'
salt '*' ciscoconfparse.find_lines_w_child config_path=https://bit.ly/2uIRxau parent_regex='ge-(.*)' child_regex='unit \d+'
Return a list of parent ciscoconfparse.IOSCfgLine
lines as text, which
matched the parent_regex
and whose children did not match child_regex
.
Only the parent ciscoconfparse.IOSCfgLine
text lines will be returned.
For simplicity, this method only finds oldest ancestors without immediate
children that match.
The configuration sent as text.
Note
This argument is ignored when config_path
is specified.
The absolute or remote path to the file with the configuration to be
parsed. This argument supports the usual Salt filesystem URIs, e.g.,
salt://
, https://
, ftp://
, s3://
, etc.
The regular expression to match the parent lines against.
The regular expression to match the child lines against.
False
Whether to ignore the white spaces.
base
Salt fileserver environment from which to retrieve the file. This
argument is ignored when config_path
is not a salt://
URL.
CLI Example:
salt '*' ciscoconfparse.find_lines_wo_child config_path=https://bit.ly/2mAdq7z parent_line='line con' child_line='stopbits'
Return all the line objects that match the expression in the regex
argument.
Warning
This function is mostly valuable when invoked from other Salt
components (i.e., execution modules, states, templates etc.). For CLI
usage, please consider using
ciscoconfparse.find_lines
The configuration sent as text.
Note
This argument is ignored when config_path
is specified.
The absolute or remote path to the file with the configuration to be
parsed. This argument supports the usual Salt filesystem URIs, e.g.,
salt://
, https://
, ftp://
, s3://
, etc.
The regular expression to match the lines against.
base
Salt fileserver environment from which to retrieve the file. This
argument is ignored when config_path
is not a salt://
URL.
Usage example:
objects = __salt__['ciscoconfparse.find_objects'](config_path='salt://path/to/config.txt',
regex='Gigabit')
for obj in objects:
print(obj.text)
Parse through the children of all parent lines matching parent_regex
,
and return a list of child objects, which matched the child_regex
.
Warning
This function is mostly valuable when invoked from other Salt
components (i.e., execution modules, states, templates etc.). For CLI
usage, please consider using
ciscoconfparse.find_lines_w_child
The configuration sent as text.
Note
This argument is ignored when config_path
is specified.
The absolute or remote path to the file with the configuration to be
parsed. This argument supports the usual Salt filesystem URIs, e.g.,
salt://
, https://
, ftp://
, s3://
, etc.
The regular expression to match the parent lines against.
The regular expression to match the child lines against.
False
Whether to ignore the white spaces.
base
Salt fileserver environment from which to retrieve the file. This
argument is ignored when config_path
is not a salt://
URL.
Usage example:
objects = __salt__['ciscoconfparse.find_objects_w_child'](config_path='https://bit.ly/2mAdq7z',
parent_regex='line con',
child_regex='stopbits')
for obj in objects:
print(obj.text)
Return a list of parent ciscoconfparse.IOSCfgLine
objects, which matched
the parent_regex
and whose children did not match child_regex
.
Only the parent ciscoconfparse.IOSCfgLine
objects will be returned. For
simplicity, this method only finds oldest ancestors without immediate
children that match.
Warning
This function is mostly valuable when invoked from other Salt
components (i.e., execution modules, states, templates etc.). For CLI
usage, please consider using
ciscoconfparse.find_lines_wo_child
The configuration sent as text.
Note
This argument is ignored when config_path
is specified.
The absolute or remote path to the file with the configuration to be
parsed. This argument supports the usual Salt filesystem URIs, e.g.,
salt://
, https://
, ftp://
, s3://
, etc.
The regular expression to match the parent lines against.
The regular expression to match the child lines against.
False
Whether to ignore the white spaces.
base
Salt fileserver environment from which to retrieve the file. This
argument is ignored when config_path
is not a salt://
URL.
Usage example:
objects = __salt__['ciscoconfparse.find_objects_wo_child'](config_path='https://bit.ly/2mAdq7z',
parent_regex='line con',
child_regex='stopbits')
for obj in objects:
print(obj.text)