Вы также можете настроить демон ssh на отображение сообщения при входе в систему. Укажите файл для отображения с помощью директивы Banner в файле sshd_config:
Banner /etc/ssh/ssh_banner
Имя файла может быть любым, но для разумности я держу его в /etc/ssh вместе с файлом sshd_config.
awk
es probablemente todo lo que necesita aquí, ya que puede hacer coincidir expresiones regulares, dividir líneas en campos y hacer comparaciones de cadenas (que funciona para la comparación de fechas siempre que use YYYY -MM -DD HH :MM :Marcas de tiempo de SS y no hay cambio de DST ).
Si la fecha está en el primer campo y la hora en el segundo:
awk -v date=1 -v time=2 '
$date > "2018-05-24" && $time < "12:00:00" && /some text/'
La implementación GNU awk de awk
tiene extensiones de formato y análisis de fechas que le permiten hacer cosas más avanzadas como:
gawk -v date=1 -v time=2 '
function parse_time(t) {
gsub(/[:-]/, " ", t)
return mktime(t)
}
BEGIN {
start = parse_time("2018-01-01 08:00")
end = systime() - 86400 # yesterday, same time
}
{t = parse_time($date" "$time)}
t >= start && t <= end && /some test/'
grep filtra expresiones regulares. Es muy bueno para filtrar líneas que contienen una palabra clave en particular, pero es difícil especificar un rango de fechas usando expresiones regulares. Por ejemplo, para obtener errores entre el 1 de enero, 20 :00 y el 3 de enero, 2 :00, debe aceptar todas las horas para el 2 de enero, pero solo por la tarde para el 1 de enero y solo temprano por la mañana para el 3 de enero. No puede separar la hora del día y la fecha, por ejemplo.
Es mucho más sencillo utilizar una herramienta más expresiva que pueda comparar fechas de forma nativa. Perl es un lenguaje popular para hacer este tipo de cosas y Python es una buena alternativa.
Aquí hay un ejemplo en Python:
import re
import time
f = open('/var/log/syslog')
line = f.readline()
while line:
# Get the date at the beginning of line with a regex
m = re.match(r'^([^\s]+\s+[^\s]+\s+[^\s]+)\s+', line)
# Parse the date
date = time.strptime(m.group(1), '%b %d %H:%M:%S')
# Compare with a given date
if date > time.strptime('Jun 6 14:00:00', '%b %d %H:%M:%S'):
print(line, end='')
# Read next line
line = f.readline()