Страница 1 из 1

Парсинг текстового файла в скрипт для фаервола.

Добавлено: 2010-05-31 7:41:47
Raven_kg
Есть текстовый файл с описанием провайдерских подсетей, примерно следующего содержания:

Код: Выделить всё

85.115.192.0/19
212.112.96.0/19
...
на основе этого списка я строю правила для фаерволов на 2 сервера (iptables и ipfw). Но список довольно длинный, провайдеры почему-то часто модернизируются и перекидывать список вручную стало задачей не из легких. Назрел такой вопрос - как можно заставить систему делать все это саму, с помощью какого-нибудь скрипта. Просто построчно парсить текстовый файл и закидывать в другой файл, например в виде

Код: Выделить всё

$IPFW add allow ip from $EXT_IP to 85.115.192.0/19 out xmit $EXT
$IPFW add allow ip from $EXT_IP to 212.112.96.0/19 out xmit $EXT
? Посоветуйте пожалуйста как можно это реализовать (желательно с примерами, т.к. я в скриптах пока слаб).

Re: Парсинг текстового файла в скрипт для фаервола.

Добавлено: 2010-05-31 8:54:01
skeletor

Код: Выделить всё

#!/bin/sh

while read myline
do
  echo "\$IPFW add allow ip from \$EXT_IP to $myline  out xmit \$EXT" >> /etc/fire.wall
done < inputfile
где inputfile - файл с адресами по одному в каждой строчке, а /etc/fire.wall - файл с уже готовыми правилами.

Re: Парсинг текстового файла в скрипт для фаервола.

Добавлено: 2010-05-31 13:59:05
Raven_kg
skeletor
Спасибо огромное, помогло!

Re: Парсинг текстового файла в скрипт для фаервола.

Добавлено: 2010-05-31 17:12:22
gonzo111
только совет не совсем верный
надо юзать скриптом не правила, а таблицы Люк
ipfw table number add addr[/masklen] [value]
ipfw table number delete addr[/masklen]
ipfw table {number | all} flush
ipfw table {number | all} list

Код: Выделить всё

$IPFW add allow ip from $EXT_IP to table(1) out xmit $EXT

#!/bin/sh

for myline in ./file_ip.txt
do
  $IPFW table(1) add  $myline/
done 
тут глянь еще
http://forum.lissyara.su/viewtopic.php? ... 32&start=0

без таблиц будет тупняк если правил будет много