Так как это кажется, нет никакой опции изменить формат в который auditd
записи это - записи в журнале, я записал следующий сценарий удара, который преобразовывает audit.log
.
#!/bin/bash
IFS=$'\n'
lines=(`tail -n 20 /var/log/audit/audit.log`)
for olin in ${lines[*]}; do
datt=`echo $olin | perl -nle '/msg=audit\(([0-9]{10}\.[0-9]{3}):/ && print "$1"'`
date_human_readable=`date -d @$datt +%Y-%m-%d\ %k:%M:%S`
echo ${date_human_readable}" "${olin}
done
Это вставляет дату события перед каждой записью и печатает результат на экране. Дата извлечена из самой записи (msg=audit(...
) и преобразованный из UNIX устанавливают метку времени к человекочитаемому формату.
Конечно, можно использовать cat
вместо tail
.
Исправьте меня, если Вы видите, что любой возможный способ улучшиться / упрощает тот сценарий.
Завершающееся слово здесь-документа должно быть единственными символами на строке: никакое расположение с отступом не позволяется. Кроме того, используйте $()
вместо обратных галочек - они nestable.
count=$(sqlplus -s $configuser/$configpass@$ORACLE_SID <<END
set pagesize 0 feedback off verify off heading off echo off;
select max(cust_id) from cutomers
exit;
END
)
echo $count
http://www.gnu.org/software/bash/manual/bashref.html#Here-Documents
OUTPUT=$( ${OracleClientHome}/sqlplus -S user/pass@database <<EOF
set pagesize 0 linesize 32767 feedback off verify off heading off echo off
select a1.id || '|' ||
a1.stmt_begin_date || '|' ||
a1.stmt_end_date || '|' ||
a1.status || '|' ||
a1.total_recs
from acct_stmt_file a1
where a1.actp_cd = 'HSA'
and a1.stmt_begin_date =trunc(sysdate);
exit;
EOF
)
echo -e "\n${OUTPUT}"
count=`sqlplus -s $configuser/$configpass@$ORACLE_SID <<END
set pagesize 0 feedback off verify off heading off echo off
select max(cust_id) from cutomers;
exit;
END`
echo $count
Вы должны поставить точку с запятой в правильном месте.
<<-END
нотация. Не пробелы, ВКЛАДКИ! – slm♦ 01.08.2013, 16:55