title: using CiscoConfParse to find ACL applied to VTY and then check ACL for log statement
body: <p>I have the code to find the name of the 'access-class' on the 'line vty'</p>
  
  <p>After that I am able to find the ACL but then I want to check each line of the ACL to verify that the 'deny' and 'permit' statements have the 'log' keyword. And print a report of OPEN if there is no 'log' statement or NOT A FINDING if there is a 'log' statement on the entry.</p>
  
  <p>And this is where I am at a loss for how to parse through the ACL statements, whether I can use something from CiscoConfParse or more standard python to do the job?</p>
  
  <pre><code>#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()
  </code></pre>
  
  <p>here is the sample configuration file I am using with the ACL on the VTY</p>
  
  <pre><code>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
  </code></pre>