21.01.2019 19:15
OlegON
 
Создадим скрипт проверки журнала

Код:
#!/bin/bash
cd /scripts/
export NLS_LANG=AMERICAN_AMERICA.UTF8
export ORACLE_SID=ekk
export ORACLE_HOME=/u/app/oracle/product/11.2/db_1

MAXC=`$ORACLE_HOME/bin/sqlplus -S  / as sysdba<<EOF
set heading off
set pagesize 0
select to_char(max(id)) from ibs.Z#IMS_EVENT_LOG;
exit
EOF`

OLDMAX=`cat maxc`
echo $MAXC >maxc

$ORACLE_HOME/bin/sqlplus -S  / as sysdba<<EOF
set heading off
set pagesize 0
set linesize 200
spool a.tmp
select * from (select to_char(C_DTIME,'HH24:MI:SS DD-MM-YY')||' : ['||C_OBJ_ID||'/'||C_USER||'] '||C_OBJ_CLASS||', '||C_MESSAGE from ibs.Z#IMS_EVENT_LOG where id>$OLDMAX and id<$MAXC and c_message like 'ORA-%' order by C_DTIME) where rownum<500;
spool off
exit
EOF

cat a.tmp | grep -v "no rows selected" | grep -v '^$' >> a.txt
rm -f a.tmp
if [ `stat -c%s a.txt` -eq 0 ]; then
rm -f a.txt
exit
fi

echo "Ошибки по журналу IMS_EVENT_LOG, в скобках указаны [C_OBJ_ID/C_USER]" >>toekk.txt
echo >>toekk.txt
cat a.txt >>toekk.txt && rm -f a.txt
этот скрипт примечателен тем, что сохраняет ID записей и добавляет записи к журналу на отправку, если таковые существуют. Лимит в 500 записей добавлен для того, чтобы в случае какого-то флуда ошибок сообщение все же было отправлено, а не убито почтовым сервером из-за величины.

Соответственно, ставим в крон первый скрипт и отправляем генерируемые им записи вторым скриптом.
Код:
#!/bin/bash
MAILF=/scripts/toekk.txt

if [ ! -f $MAILF ]; then
    exit
fi

(
sleep 1
echo "ehlo x"
sleep 1
echo "mail from:$FROMEMAIL"
sleep 1
echo "rcpt to:$TOEMAIL"
sleep 1
echo "data"
sleep 1
echo "subject:EKK - "`date`
sleep 1
echo "from:$FROMEMAIL"
sleep 1
echo "to:$TOEMAIL"
sleep 1
echo "Content-Type: text/plain; charset=Windows-1251"
sleep 1
echo
sleep 1
iconv -f utf8 -t Windows-1251 $MAILF && rm -f $MAILF
sleep 1
echo "---"
sleep 1
echo "."
sleep 1
echo "QUIT"
) | telnet smtp.local;

Форум на базе vBulletin®
Copyright © Jelsoft Enterprises Ltd.
В случае заимствования информации гипертекстовая индексируемая ссылка на Форум обязательна.