На самом деле не отвечаю на вопрос. но предлагая альтернативу... добавьте правило в системный журнал для пересылки всех сообщений на сервер, например.
*.* @server.host.name
Если вы сделаете это,вам не нужно сохранять/var/log
(по моему опыту, вы всегда будете заполнять свое постоянное хранилище, если у вас есть /var/log
на нем).
Обратите внимание, что вам потребуется включить сетевой модуль в системном журнале на вашем сервере. -Как это сделать, зависит от того, какое программное обеспечение системного журнала вы используете. Вам также может понадобиться иметь дело с брандмауэрами (, обычно это порт UDP 514 ).
Также обратите внимание, что вам может потребоваться использовать IP-адрес вместо server.host.name
, если ваш преобразователь DNS недоступен при запуске демона системного журнала.
Одним из (я считаю большим )преимуществом этого является то, что все ваши встроенные устройства могут вести журналы на одном сервере, а затем все журналы доступны в одном месте, -вы должны использовать правила сопоставления в программное обеспечение системного журнала вашего сервера для хранения сообщений с каждого устройства в отдельные файлы, названные в честь исходного устройства (иногда это может быть сложно настроить, но оно того стоит ).
Если вы используетеbash
(строка shebang вызывает sh
, но вопрос помечен тегом bash
), вы можете получить восемь символов перед точкой с помощью этого кода:
var=62810501601420200502.swt1
tmp="${var%.*}"
date_string="${tmp: -8}"
С sh
вы можете использоватьsed
:
date_string="$(printf %s "$var" | sed -r 's/^(.*)(.{8})\..*$/\2/')"
Или сgrep
:
date_string="$(printf %s "$var" | grep -oP '.{8}(?=\.)')"