Ich habe den Code, um den Namen der Zugangs-Klasse "zu finden auf der‚Linie vty‘CiscoConfParse mit ACL VTY angewandt zu finden und dann ACL prüft für Log-Anweisung
Danach ich in der Lage bin zu finden die ACL, aber dann möchte ich jede Zeile der ACL überprüfen, um zu überprüfen, ob die Anweisungen "deny" und "permit" das Schlüsselwort "log" haben. Und drucken Sie einen Bericht von OPEN, wenn es keine 'Protokoll' Anweisung gibt oder NOT A FINDING, wenn eine 'Protokoll' Anweisung für den Eintrag vorhanden ist.
Und das ist, wo ich ratlos für die ACL-Anweisungen zu analysieren, ob ich etwas von CiscoConfParse oder mehr Standard-Python verwenden können, um die Aufgabe zu erledigen?
#Importing the necessary modules.
import sys
from sys import argv
#Importing the necessary modules.
from ciscoconfparse import CiscoConfParse
import sys
import argparse
def check_VTY_ACL_NET1637():
## Search for LINE VTY access-list name then check if that ACL has log keyword
#
for VTY_ACL in parse.find_children_w_parents('line vty', 'access-class'):
#print(VTY_ACL[14])
VTY_ACL = VTY_ACL.lstrip('access-class ')
#print (VTY_ACL)
VTY_ACL_2 = VTY_ACL.rstrip(' in')
#print(VTY_ACL_R)
#has_ACL_in = VTY_ACL.find_lines(r'access-class')
#print(has_ACL_in)
#for IP_ACL_LIST in parse.find_objects_w_child(VTY_ACL_R, 'log'):
#for IP_ACL_LIST in parse.find_lines(VTY_ACL_R):
for IP_ACL_LIST in parse.find_parents_w_child(VTY_ACL_2, ''):
#print(IP_ACL_LIST)
#IP_ACL_ACE = parse.has_line_with(' log')
IP_ACL_ACE = parse.find_children_w_parents(IP_ACL_LIST, '')
#print(IP_ACL_ACE)
has_log_keyword = parse.has_line_with(r' log')
#print(has_log_keyword)
#
#has_log_keyword = has_log_keyword.split()
for log in IP_ACL_ACE:
#print (log)
#has_not_log_keyword = parse.has_line_with(r'. log')
#print(has_not_log_keyword)
keyword_log = 'log'
keyword_permit = 'permit'
keyword_deny = 'deny'
log = log.split()
print (log)
if (not keyword_log):
print('OPEN LINE VTY')
else:
print("Not a Finding: 'NET-VLAN-023'")
# Main starting of script
def start():
script, input_file = argv
global parse
parse = CiscoConfParse (input_file)
print("Opening config file: %r\n" % input_file)
check_VTY_ACL_NET1637()
def main():
args = sys.argv[1:]
if len(args) == 1:
start()
#else:
#usage()
if __name__ == "__main__":
main()
hier ist die Beispielkonfigurationsdatei I mit der ACL auf dem VTY bin mit
Current configuration : 25432 bytes
!
ip access-list extended SSH2-IN
remark ///\\\///\\\///\\\///\\\///\\\///\\\///
remark ///\\\***DEC 8 2015***///\\\
remark SomeSite //VoSIP //
remark ******************************************
permit ip 10.227.2.128 0.0.0.63 any
permit tcp 43.81.133.0 0.0.0.255 any eq 22 log
deny ip any any
!
line vty 0 4
access-class SSH2-IN in
line vty 5 15
access-class SSH2-IN in
!
end
groß dargestellt, vielen Dank. Ich mag, dass ich jetzt diese beiden Beispiele habe, es hilft mir sehr in meinem Wissen über Python und Ciscoconfarse. Ausgezeichnet! –