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

IPFW add table FILE

Добавлено: 2011-06-10 12:11:45
Virtus
Привет.
Перепробовал кучу конструкций - уже руки опускаются (
Хочу по крону импортировать файл IP в таблицу, но из всего файла импортируется только первая строка и все (

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

файл ip.txt:
192.168.0.1
192.168.0.2
192.168.0.4
192.168.0.5
Пробовал

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

for i in `cat /usr/local/www/ip.txt`
do
/sbin/ipfw table 1 add $i
done
и

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

cat /usr/local/www/ip.txt | while read ip;
 do
/sbin/ipfw ipfw table 1 add $ip
done
АНАЛОГИЧНО и

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

 cat /usr/local/www/ip.txt | xargs ipfw table 1 add

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

ipfw table 1 list:
192.168.0.1/32 0
В чем может быть причина? Куда копать? Спасибо

p.s. freebsd 8.1

Re: IPFW add table FILE

Добавлено: 2011-06-10 12:17:06
rmn

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

cat /usr/local/www/ip.txt | 
(
    while read ip
    do
        /sbin/ipfw ipfw table 1 add $ip
    done
)

Re: IPFW add table FILE

Добавлено: 2011-06-10 12:47:11
Virtus
rmn писал(а):

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

cat /usr/local/www/ip.txt | 
(
    while read ip
    do
        /sbin/ipfw table 1 add $ip
    done
)
вообще не работает (

Re: IPFW add table FILE

Добавлено: 2011-06-10 16:19:11
rmn

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

remcomp# ipfw table 1 flush
remcomp# ipfw table 1 list
remcomp# cat ip.txt 
192.168.0.1
192.168.0.2
192.168.0.3
192.168.0.4
remcomp# cat script.sh 
#!/bin/sh

cat ip.txt |
(
        while read ip
        do
                /sbin/ipfw table 1 add $ip
        done
)

remcomp# ./script.sh 
remcomp# ipfw table 1 list
192.168.0.1/32 0
192.168.0.2/32 0
192.168.0.3/32 0
192.168.0.4/32 0
remcomp#

Re: IPFW add table FILE

Добавлено: 2011-06-10 18:24:11
FreeBSP
я бы написал похоже

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

#!/bin/sh

cat ip.txt | { while read ip; 
do 
/sbin/ipfw table 1 add $ip; 
done;
 }

Re: IPFW add table FILE

Добавлено: 2011-06-14 9:30:26
virtus
Спасибо!

Re: IPFW add table FILE

Добавлено: 2011-06-22 9:32:56
slb51
Могу предложить такой вариант:
Создаём текстовый файл для table 1 (допустим, это группа компьютеров с неограниченным доступом в инет, назовём его full_allow):

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

#ee /usr/tables/full_allow	
192.168.0.1
192.168.0.2
192.168.0.3
192.168.0.4
192.168.0.5
192.168.0.6
В скрипте (допустим, это файл /usr/local/etc/ipfw.rules) допишем:

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

#ee /usr/local/etc/ipfw.rules:
# Переменные
fwcmd='/sbin/ipfw'
if_out='bge0' # Внешний интерфейс
ip_out='215.87.24.33' # IP внешнего интерфейса
if_in='bge1' # Внутренний интерфейс
ip_in='192.168.0.254'  # IP внутреннего интерфейса
MyLan='192.168.0.0/24' # Локальная сеть
dns='213.177.98.1,213.177.97.1'  # DNS-серверы
${fwcmd} -f -q flush # Сброс всех правил
${fwcmd} add check-state # Контроль соответствия пакетов динамическим правилам
# Заполнение таблиц
${fwcmd} table 1 flush
   cat /usr/tables/full_allow | while read ip; do
      # echo ${fwcmd} table 1 add $ip 1
      ${fwcmd} table 1 add $ip 1
   done
# Неограниченный доступ
${fwcmd} add allow ip from table\(1\) to any in via ${if_in}
${fwcmd} add allow ip from any to table\(1\) out via ${if_in}
Ясное дело, это не весь скрипт, а только фрагмент, относящийся к использованию текстового файла для заполнения таблиц.
После этого Firewall надо перезапускать:

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

/etc/rc.d/ipfw restart
И так каждый раз после внесения изменений в текстовые файлы либо в сам скрипт.

Re: IPFW add table FILE

Добавлено: 2011-06-22 11:03:44
hizel

Re: IPFW add table FILE

Добавлено: 2011-06-22 11:47:57
slb51
Можно по-всякому. Вариантов масса.