@borg333

Awk/sed многострочный поиск, как?

Здравствуйте. Задача в следующем. Есть система, которая генерирует ip атакующего, на основании которого необходимо закрывать соединения при помощи pfctl -k id -k id/creatorid. pfctl -ss -vv выводит все соединения с необходимыми данными (если udp, то это 3я строка, если tcp, то 4я).
Вопрос в том, как сформировать запрос с аргументом так, чтобы выводилось id и creatorid при введении аргументов для ip?
Вывод pfctl -ss -vv
iface0 udp 10.0.0.1:531 <- 10.0.0.100:59843       SINGLE:MULTIPLE
   age 00:00:21, expires in 00:00:09, 1:1 pkts, 62:62 bytes, rule 106
   id: 000000001d123456 creatorid: 1111a1ad
iface1 tcp 10.0.1.1:34394 -> 10.0.0.102:10112       FIN_WAIT_2:FIN_WAIT_2
   [461321051 + 2146816] wscale 7  [3245516099 + 26880] wscale 8
   age 00:00:07, expires in 00:01:23, 5:4 pkts, 265:186 bytes, rule 57
   id: 000000001d234567 creatorid: 1112a1ad
iface2 tcp 10.1.1.1:10222 <- 10.0.0.1:35828       FIN_WAIT_2:FIN_WAIT_2
   [2022818706 + 26880] wscale 9  [779819541 + 71679] wscale 7
   age 00:00:37, expires in 00:00:53, 5:5 pkts, 297:282 bytes, rule 106
   id: 000000001d345678 creatorid: 1113a1ad

Например, необходимо при выполнении команды pfctl -ss -vv | awk/sed.... c аргументом ip, вывести id и creatorid всех подключений где фигурирует этот ip
К примеру нам дали 10.0.0.1($1), при выполнении pfctl -ss -vv | awk/sed...$1 должно вывести
id: 000000001d123456 creatorid: 1111a1ad
id: 000000001d345678 creatorid: 1113a1ad

Заранее спасибо.

Edit. Основной запрос получился таким
awk '/10.0.0.1:/ {getline; getline; if (/age/){getline} {print}}' states

Поправьте если коряво.
  • Вопрос задан
  • 201 просмотр
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

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