LINUX.ORG.RU

Как сделать на shell запуск команд для определенных строк


0

0

Есть исходный текстовый файл такого вида.

10   11.22.33.3
3   131.242.3.5
6   6.22.33.7
3   81.22.33.3

То есть число и адрес разделенные пробелом на каждой строке.
Нужен скрипт на shell, который для каждой строки первое число в которой больше 2 выполнит команду iptables –A INPUT –s <ip> -j DROP.
Где вместо <ip> – подставляется значение из IP из исходного файла.

Заранее благодарю.

for SOME_IP in $(awk '{ if ($1>2) print $2 }' file_with_ips);
do iptables -A INPUT -s $SOME_IP -j DROP;
done

Вот как-то так. Если что, сильно не пинайте за быдлокод.

DJAnto ()
Ответ на: комментарий от balodja

Да, действительно, просто я во всём это не силён. И кстати, у вас после -gt циферка пропущена.

DJAnto ()

Если блэклист большой, лучше юзать ipset.

nnz ★★★★ ()

Просто используй fail2ban не изобретай велосипед.

ptah_alexs ★★★★★ ()
awk -v cmd='iptables –A INPUT -j DROP -s' '$1>2 {system(cmd" "$2)}' input.file
sdio ★★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.