LINUX.ORG.RU
решено ФорумAdmin

Можно ли заставить rsyslog экранировать одинарные кавычки?

 


0

1

Доброго времени суток

часть rsylog.conf:

$ModLoad omlibdbi
$template oracleformat,"insert into syslog(datetime,host,program,pid,message,facility,level1) values('%timereported:1:19:date-rfc3339%%timereported:27:32:date-rfc3339%','%HOSTNAME%','%programname%','%PROCID%','%msg:::space-cc%','%syslogfacility-text%','%syslogseverity-text%')",SQL

*.*     :omlibdbi:;oracleformat

Т.е. все логи пишутся в удалённую БД. После подключения очередного хоста в локальном логе появилось:

Jun 4 22:50:59 vm-syslog rsyslogd: db error (917): 917: ORA-00917: missing comma

После этого rsyslog начал постепенно есть память. Т.е. он посчитал, что база временно в дауне и каждые 2,5 мин повторял попытку записать лог. Накапливая поступающие логи в памяти

Запустил rsylogd в foreground с дебагом ( rsylogd -c5 -dn ), увидел что проблемное сообщение содержит одинарные кавычку.

Jun  4 23:17:22 vm-xx-mail postfix/smtpd[23918]: warning: Illegal address syntax from xxx-xxxxxxxx.xxxxxxxxx.xxx[xxx.xxx.xxx.xxx] in RCPT command: <'x.xxxxx@xx-xxx.xx'>

Логично, одинарные кавычки меняют sql запрос из template, делая его некорректным.

В template частично экранируется msg с помощью msg::space-cc, но эта дирертива вырезает только asci с кодами до 32 включительно, а у ' код - 0x27

Можно ли экранировать и кавычку тоже?

★★★★★

Кавычку должна экранировать опция SQL, а если СУБД не mysql, то опция STDSQL.

mky ★★★★★
()
Ответ на: комментарий от mky

STDSQL

Похоже то что нужно. Спасибо!

router ★★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.