@dobromin

Скрипт оптимизировать и починить?

Скрипты находятся в каталоге home

ipset.start
Скрипт для создание базы куда будут записываться ip адреса а также добавления правила в iptables

ipset -N addips iphash
	sleep 10
	iptables -I INPUT 6  -i eth1 -m set --match-set addips src -j ACCEPT


ipset-read-ip.start
скрипт c циклом while для чтения ip адресов из файла и записи их в базу ipset (addips)

cat /home/host.su/address.txt | (
	while read ip;
	do
	ipset -A addips $ip
	done);


install-while-ipset
Вечный цикл while для запуска скрипта ipset-read-ip.start

while true; do ./ipset-read-ip.start;
	done;


При загрузке системы запускается
iptables далее
ipset.start далее
install-while-ipset


Задача какая: Записывать ип адреса хостов в текстовый файл которым необходимо давать доступ.
с текстового файла скрипт берет ип и записывает в ipset.
в iptables существует правило которое разрешает ип существующие в базе ipset

При тестировании происходит следующее, цикл работает все хорошо ошибок нет.
делаем запись в файл (address.txt) откуда считываются ип.
Скрипт считывает, после этого появляется надпись
ipset v6.30: Element cannot be added to the set: it's already added
В принципе логично так как по циклу пытается сделать запись с тем же ип, да и бог с ним.
Но доступ у хоста не появляется, при повторном занесении ип того же хоста вторым по списку, например

192.168.1.1
192.168.1.1
, т.е вторым третьим четвертым итд, тогда в базу (addips) ipset попадает.
в общем не суть, нужно просто повторить занесение ип в строчке, доступ появляется т.е заносится в базу ипсет ип записанный в текстовый файл.

В общем у меня два вопроса, как объединить все это может в один скрипт а не в несколько,
а также как исправить повторное занесение ип? почему после первого нет доступа, хотя он же пишет ipset v6.30: Element cannot be added to the set: it's already added
что такой ип уже есть в базе)) причем начинает работать не после цикличной попытки внести ип а именно после повторной записи того же самого ип в файл откуда читает.

Прошу прощение за данные костыли и полтора колесный велосипед, не знаю не могу найти решение иное.

В общем заметил что когда в списке "в текстовом файле" один раз записан ip то он не вносится в лист ipset, когда в списке два одинаковых ip тогда вносит.
Думаю с циклом косяк какой-то
  • Вопрос задан
  • 190 просмотров
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы