Flex - wyrażenia regularne

Cel

Laboratorium ma na celu zapoznanie z generatorem skanerów flex (flex manual). Zadanie polega na wykorzystaniem flexa do stworzenia skanera pliku syslog.conf (syslog.conf manual).

flex - wprowadzenie

Informacje na temat flexa.

syslog.conf - wprowadzenie

Do zbierania informacji o działaniu systemu i umieszczania ich w plikach służy demon systemowy syslogd. Plikiem konfiguracyjnym syslogd jest /etc/syslog.conf (man syslog.conf).

Plik ten opisuje reguły systemu logowania. W pojedynczej linii pliku podane jest najpierw skąd i o jakim priorytecie informacje mają być zapisywane, po czym podana jest pełna ścieżka do pliku, w którym te informacje mają zostać zgromadzone. Zamiast ścieżki do pliku może tu być ewentualnie podany adres innego komputera lub identyfikator użytkownika, który miałby te informacje otrzymywać.

Format pliku /etc/syslog.conf jest następujący:

facility.priority     action

gdzie

Zadanie

Przykładowo, skaner dla wejścia:

*.=debug /var/log/debug
*.err /var/log/syslog

#Uzytkownicy ktorzy powinni ujrzec wiadomosc ze sie zalogowales.
*.=alert root,your_username
*.=emerg root,your_username

mail.info;mail.notice /var/log/maillog
kern.* /var/log/kern.log
daemon.info;daemon.notice /var/log/daemon.log
cron.* /var/log/cron.log
mail.* /var/log/mail.log
user.* /var/log/user.log
uucp.* /var/log/uucp.log
*.*;auth,authpriv.none /var/log/syslog

#Umiesc pliki z logami w dwoch miejscach
authpriv.*;auth.* /admin/auth.log
authpriv.*;auth.* /var/log/secure

#Wyswietlanie wszystkiego na konsoli
*.* /dev/tty12

#Logowanie na zdalnym serwerze
*.* @logserver

ma wypisywać na wyjściu komunikat, że format pliku jest poprawny.

W przypadku pojawienia się linii o nieprawidłowym formacie powinnien być wypisany komunikat o błędzie, wraz z numerem linii, w której błąd wystąpił. Komunikat o błędzie powinien pojawić się dla każdej niepoprawnej linii.

Dodatkowo proszę przyjąć, że nazwy plików, katalogów, poleceń, terminali itp. składają się z następujących znaków [a-zA-Z0-9._-]. Dozwolone są powtórzenia w części facility (patrz opis pliku syslog.conf), czyli przykładowo auth,auth.*.

Przyładowy plik syslog.conf: testfile-syslog.conf

Materiały dodatkowe

Lex - A Lexical Analyzer Generator, M. E. Lesk,
Flex - manual po polsku,
Flex, version 2.5 - A fast scanner generator.