Присвоение вывода SQL-запроса к переменной

Так как это кажется, нет никакой опции изменить формат в который 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.

Исправьте меня, если Вы видите, что любой возможный способ улучшиться / упрощает тот сценарий.

10
02.08.2013, 02:23
3 ответа

Завершающееся слово здесь-документа должно быть единственными символами на строке: никакое расположение с отступом не позволяется. Кроме того, используйте $() вместо обратных галочек - они 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

13
27.01.2020, 20:02
  • 1
    , можно также использовать вкладки с <<-END нотация. Не пробелы, ВКЛАДКИ! –  slm♦ 01.08.2013, 16:55
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}"
1
27.01.2020, 20:02
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

Вы должны поставить точку с запятой в правильном месте.

-1
27.01.2020, 20:02

Теги

Похожие вопросы