/var/log/syslog файл и интревал времени

Екатерина Бун

Новичок
Пользователь
Сен 29, 2021
13
0
1
Здравствуйте!
Я написала функцию, которая читает в файле /var/log/syslog строки только для CRON процесса.
def Function3 ():
print("Getting Log Info")
file = open("/var/log/syslog", "r")
logCriteria = "CRON"
for line in file:
if re.search(logCriteria, line):
print(line)
Но мне среди этих строк нужно выбрать строки только в заданном интервале времени запуска процесса. Например, с 00:00 до 05:00. Подскажите, пожалуйста, каким способом можно задать интервал времени и сделать выборку? Очень большое спасибо заранее.
 

regnor

Модератор
Команда форума
Модератор
Июл 7, 2020
2 672
478
83
а у вас это какие то тестовые работы?
просто в юнике есть много способов сортировать и выбирать логи по умолчанию в системе, не нужно ничего писать, уже написано за вас...
 

Екатерина Бун

Новичок
Пользователь
Сен 29, 2021
13
0
1
а у вас это какие то тестовые работы?
просто в юнике есть много способов сортировать и выбирать логи по умолчанию в системе, не нужно ничего писать, уже написано за вас...
Здравствуйте!
Да, у меня финальная контрольная работа в университете. Я не знаю как на Пайтон реализовать выборку времени в определенном интервале. Сможете подсказать? Заранее благодарю!
 

regnor

Модератор
Команда форума
Модератор
Июл 7, 2020
2 672
478
83
ну текст лога такого вида (не мой, взял с какого то сайта)
Код:
Dec 19 15:12:42 backup.main.merionet.ru sbatchd[495]: sbatchd/main: ls_info() failed: LIM is down; try later; trying ...
Dec 19 03:14:28 system.main.merionet.ru pop-proxy[27283]: Connection from 186.115.198.84
Dec 19 15:14:30 control.main.merionet.ru pingem[271] : office.main.merionet.ru has not answered 42 times
Dec 19 04:15:05 service.main.merionet.ru vmunix: Multiple softerrors: Seen 100Corrected Softerrors from SIMM J0201
Dec 19 15:15:16 backup.main.merionet.ru PAM_unix[17405]: (sshd) session closed 'for user trent

то есть нам нужно получить дату, и сравнить ее с датой которая нам нужна (Dec 19 00:00:00 и Dec 19 05:00:00)
например так
Python:
from datetime import datetime as dt

first_time = dt.strptime("Dec 19 00:00:00", "%b %d %H:%M:%S")
end_time = dt.strptime("Dec 19 05:00:00", "%b %d %H:%M:%S")

with open("/var/log/syslog", "r") as f:
    lines = f.readlines()

for i in lines:
    if first_time < dt.strptime(i[:15], "%b %d %H:%M:%S") < end_time:
        print(i)
 

Екатерина Бун

Новичок
Пользователь
Сен 29, 2021
13
0
1
ну текст лога такого вида (не мой, взял с какого то сайта)
Код:
Dec 19 15:12:42 backup.main.merionet.ru sbatchd[495]: sbatchd/main: ls_info() failed: LIM is down; try later; trying ...
Dec 19 03:14:28 system.main.merionet.ru pop-proxy[27283]: Connection from 186.115.198.84
Dec 19 15:14:30 control.main.merionet.ru pingem[271] : office.main.merionet.ru has not answered 42 times
Dec 19 04:15:05 service.main.merionet.ru vmunix: Multiple softerrors: Seen 100Corrected Softerrors from SIMM J0201
Dec 19 15:15:16 backup.main.merionet.ru PAM_unix[17405]: (sshd) session closed 'for user trent

то есть нам нужно получить дату, и сравнить ее с датой которая нам нужна (Dec 19 00:00:00 и Dec 19 05:00:00)
например так
Python:
from datetime import datetime as dt

first_time = dt.strptime("Dec 19 00:00:00", "%b %d %H:%M:%S")
end_time = dt.strptime("Dec 19 05:00:00", "%b %d %H:%M:%S")

with open("/var/log/syslog", "r") as f:
    lines = f.readlines()

for i in lines:
    if first_time < dt.strptime(i[:15], "%b %d %H:%M:%S") < end_time:
        print(i)
Большое спасибо! Именно не знала как сравнить форматы даты. Всё понятно!
 

Форум IT Специалистов