(Py) Moduł TextFSM*

Moduł TextFSM

TextFSM

Wstęp teoretyczny

Zmienne

  • Wzorzec deklaracji zmiennej TextFSM:
    • Value [opcja] name (regex).
  • Value – Definiuje zmienną, stanowiącą klucz słownika zwracanego przez moduł TextFSM.
    • Filldown – Wartość zapisana w pamięci do czasu nadpisania przez inną wartość, spełniającą warunki wyrażenie regularnego. Przykładowym zastosowaniem jest nazwa listy ACL kopiowana i przypisywana po wszystkich następujących po niej wpisów. Zmiana zmiennej nastąpi dopiero po dotarciu do wiersza zawierającego nazwę nowej listy ACL.
    • Key – Wartość zawierająca unikalny identyfikator.
    • Required – Wartość wymagana.
    • List – Lista wielu pasujących wyrażeń.
    • Fillup – Działa podobnie jak wartość Filldown.
  • Name – Nazwa zmiennej.
  • Regex – Wyrażenie regularne Regex.

REQEX

Tworzenie wyrażeń regularnych

Zakresy znaków

  • [abc] – Pojedynczy znak „a”, „b” bądź „c”.
  • [a-z] – Pojedynczy znak z zakresu od „a” do „z”.
  • [A-Z] – Pojedynczy znak z zakresu od „A” do „Z”.
  • [0-9] – Pojedynczy znak z zakresu od „0” do „9”.
  • [^a-d] – Pojedynczy znak nie należący do zakresu od „a” do „d”.
  • [0-9a-b] – Pojedynczy znak z zakresu od „0” do „9” bądź z zakresu od „a” do „z”.
  • [zakres]{3} – Dokładnie trzy znaki ze wskazanego zakresu.
  • [zakres]{3,} – Trzy bądź więcej znaków ze wskazanego zakresu.
  • [zakres]{1,3} – Od jednego do trzech znaków ze wskazanego zakresu.
  • [zakres]* – Dowolna liczba znaków bądź żaden.
  • [zakres]+ – Dowolna liczba znaków.
  • [zakres]? – Jeden znak bądź żaden.

Grupowanie

  • ()
  • (?:)
  • (?#)
  • (?=)
  • (?!)
  • (?<=)
  • (?<!)

Przykładowe wyrażenie regularne

Przydatne sieciowe wyrażenia regularne

  • Adres MAC ([0-9a-fA-F]{2}\:[0-9a-fA-F]{2}\:[0-9a-fA-F]{2}\:[0-9a-fA-F]{2}\:[0-9a-fA-F]{2}\:[0-9a-fA-F]{2})
  • Adres MAC ([0-9a-fA-F]{2}(:[0-9a-fA-F]{2}){5})
  • Adres IP4 ([0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3})
  • Adres IP4 (\d+.\d+.\d+.\d+)
  • Adres IP4 ^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?).){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$
  • Datetime (\w{3} \d{2} \d{2}:\d{2}:\d{2})

Inne wyrażenia regularne

  • Dowolne znaki do wskazanego znaku końcowego ” ([^,”]+)

Bezpieczne hasło

  • ^(?=.*[A-Za-z])(?=.*[0-9])[A-Za-z0-9]{6,}$ – Przynajmniej jedna litera oraz jedna cyfra, miniumum 6 znaków.
  • ^(?=.*[A-Za-z])(?=.*[0-9])(?=.*[@$!%#?&])[A-Za-z0-9@$!%#?&]{6,}$ – Przynajmniej jedna litera, jedna cyfa oraz jeden znak specjalny, miniumum 6 znaków.
  • ^(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])[a-zA-Z0-9]{6,}$ – Przynajmniej jedna mała litera, jedna duża litera oraz jedna cyfa, miniumum 6 znaków.
  • ^(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[@$!%?&])[A-Za-z0-9@$!%?&]{6,}$ – Przynajmniej jedna mała litera, jedna duża litera, jedna cyfa oraz jeden znak specjalny, miniumum 6 znaków.

Przykładowe wykorzystanie modułu TextFSM

Przykład I

import textfsm

# Pobranie wzorca / tekstu do przetworzenia:
with open("template.textfsm") as template, open("text.txt") as text:
    fsm = textfsm.TextFSM(template)
    fsmResult = fsm.ParseText(text.read())
    
# Parsowanie danych do postaci listy słowników: 
output = []
for row in fsmResult:
    output.append(dict(zip(fsm.header, row)))

Przykład II

import textfsm

# Pobranie tekstu do przetworzenia:
file = open("text.txt", "r")
text = file.read()

# Pobranie wzorca / przetworzenie tekstu:
with open("template.textfsm") as template:
    fsm = textfsm.TextFSM(template)
    fsmResult = fsm.ParseText(text)

# Parsowanie danych do postaci listy słowników: 
output = []
for row in fsmResult:
    output.append(dict(zip(fsm.header, row)))

Pozostałe tematy związane z bibliotekami / modułami Python

Podstawowe

Rozszerzone

SQL

PyQt 5

Automatyzacja

Data Mining

PDFPRINT

Robert T Kucharski

Cisco Network Engineer in GPW.

Dodaj komentarz