Понадобилось однажды написать скрипт чтобы добавить в ipset все IP для которых били подняты сессии на сервере доступа, использовался биллинг Abills, поэтому я решил взять IP адреса из MySQL таблицы биллинга.
Первым делом создадим тестовый ipset:
ipset create test iphash
Создадим файл скрипта:
nano iplist.sh
Добавим в него содержимое:
mysql -u root -e "SELECT INET_NTOA(framed_ip_address) FROM abills.internet_online WHERE (status=1 or status>=3) AND guest=0;" -s -N > iplist.txt iplist_data=$(cat iplist.txt) for row_data in $iplist_data; do ipset -exist add test ${row_data}; done rm iplist.txt
Выполняем скрипт и проверяем:
chmod +x iplist.sh ./iplist.sh ipset list test | wc -l ipset -L
Смотрите также мою статью — Скрипты ip-up и ip-down с ipset для Accel-ppp