Строка подкачки, содержащая шаблон со следующей строкой

Необходимо настроить auditd записывать execve события. Пример на RHEL5:

[root@ditirlns01 ~]# auditctl -a always,entry -S execve
WARNING - 32/64 bit syscall mismatch, you should specify an arch
[root@ditirlns01 ~]#

Я игнорирую предупреждение дуги, и это, кажется, не имеет значения, но можно использовать -F arch=b64 или -F arch=b32 установить его, если Вы хотите.

Результат вышеупомянутого:

[root@ditirlns01 ~]# ls /tmp/whatever
ls: /tmp/whatever: No such file or directory
[root@ditirlns01 ~]# grep whatever /var/log/audit/audit.log
type=EXECVE msg=audit(1386797915.232:5527206): argc=3 a0="ls" a1="--color=tty" a2="/tmp/whatever"
type=EXECVE msg=audit(1386797927.133:5527241): argc=3 a0="grep" a1="whatever" a2="/var/log/audit/audit.log"
[root@ditirlns01 ~]#

Это очевидно быстро и грязно, но это - основы того, как Вы делаете это. Что необходимо сделать, точно, вероятно, зависит в большой степени от того, что Вы пытаетесь сделать точно. Можно уменьшить контрольный поток с помощью различных фильтров в auditctl команда, но я не знаю ни одной той информации, таким образом, я не знаю, что включать. Если бы Вам нужно что-то более определенное, я предложил бы Вас или проверить страницу справочника или добавить комментарий к этому ответу, и я обновлю его еще немного.

Надежда, которая помогает продвинуть Вас в правильном направлении.

Править:

Так как Ваш вопрос включает рассмотрение конкретного пользователя, я могу показать Вам что:

[root@ditirlns01 ~]# auditctl -a always,entry -S execve -F euid=16777216
WARNING - 32/64 bit syscall mismatch, you should specify an arch

Идентичный вышеупомянутому, но только execveкем-то работающим с эффективным идентификатором пользователя 16777216 будет зарегистрирован. Если необходимо указать пользователя loginuid значение (кто они первоначально вошли в систему как) затем Вы фильтруете auid вместо этого:

[root@ditirlns01 ~]# auditctl -a always,entry -S execve -F auid=16777216
WARNING - 32/64 bit syscall mismatch, you should specify an arch

Фильтры AUID/loginuid были бы полезны, например, если пользователь сделает a su или sudo базироваться. В той ситуации будет много материала, работающего как корень, но Вы только обеспокоены материалом, который был начат рассматриваемым пользователем. auditctl также позволяет Вам фильтры стека, таким образом, можно отфильтровать обоими euid и auid:

[root@ditirlns01 ~]# auditctl -a always,entry -S execve -F auid=16777216 -F euid=0
WARNING - 32/64 bit syscall mismatch, you should specify an arch
[root@ditirlns01 ~]# ls /tmp/nashly -ltar
ls: /tmp/nashly: No such file or directory
[root@ditirlns01 ~]# grep nashly /var/log/audit/audit.log
type=EXECVE msg=audit(1386798635.199:5529285): argc=4 a0="ls" a1="--color=tty" a2="/tmp/nashly" a3="-ltar"
type=EXECVE msg=audit(1386798646.048:5529286): argc=3 a0="grep" a1="nashly" a2="/var/log/audit/audit.log"
2
14.03.2015, 13:59
3 ответа

Попробуйте это с GNU SED:

sed -ne '/signal:/{h;b};/^[^ ]/{p;x};p' file

См.: Человек SED

2
27.01.2020, 22:00

Я рекомендую запустить iw --help и прочитать последнюю строку вывода.


Кроме того, я думаю, что вы могли бы обойтись без всех этих труб и использовать одно единственное sed обращение:

iw wlan0 scan | sed -n '/signal:/{s/^[[:blank:]]*/ * /;h}
/^[[:blank:]]*SSID: /{s///;G;p};/primary/{s/^[[:blank:]]*/ /;p}'

т.е. :

/signal:/{s/^[[:пробел:]]*/ * /;h} - отформатировать сигнал и скопировать через hстарый пробел
/^[[:пробел:]]*SSID: /{s//; G;p} - строка формата SSID, добавьтеG строку из пространства удержания к шаблону и распечатайте
/primary/{s/^[[:blank:]]*/ /;p} - строка формата primary и p распечатайте ее

.
1
27.01.2020, 22:00

На моем компьютере выполнение ...

sudo iw wlp0s18f2u1 scan |
sed -Ee:n -e'$!N;/^.sig/!D' \
          -e'/\* pri/s/.([^\t]*\t).*(SSID:[^\t]*\t).*p/\2\1p/;t' \
          -ebn

... дает такие результаты, как ...

SSID: ATT477A7i6
    signal: -61.00 dBm
    primary channel: 6
SSID: ATT5K5I6b4
    signal: -65.00 dBm
    primary channel: 6
SSID: ATT960
    signal: -75.00 dBm
    primary channel: 6
SSID: Bernardo Shores WiFi 4
    signal: -77.00 dBm
    primary channel: 6

Он работает с GNU sed . Более портативная версия может выглядеть так:

(   t=$(printf \\t) nt=[\^$t]*$t
    sudo iw wlp0s18f2u1 scan |
    sed -e:n -e'$!N;/^.sig/!D' \
             -e"/* pri/s/.\($nt\).*\(SSID:$nt\).*p/\2\1p/;t" \
             -ebn
)
1
27.01.2020, 22:00

Теги

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