Скрипт добавления IP адресов из файла в ipset

Понадобилось однажды написать скрипт чтобы добавить в ipset все IP для которых били подняты сессии на сервере доступа, использовался биллинг Abills, поэтому я решил взять IP адреса из MySQL таблицы биллинга.

Первым делом создадим тестовый ipset:

ipset create test iphash

Читать далее «Скрипт добавления IP адресов из файла в ipset»

Решение ошибки «Another app is currently holding the xtables lock»

Недавно заметил на одном сервере с биллинговой системой ABillS, что при массовом выполнении скрипта /etc/ppp/ip-up возникает ошибка:

Another app is currently holding the xtables lock. Perhaps you want to use the -w option?

Посмотрев код скрипта обнаружил, что среди iptables правил есть два, которые могут тормозить работу, а именно выполнялся поиск ipoe интерфейсов двумя командами:

IPTABLES="/sbin/iptables"
EXIST=`${IPTABLES} -t nat -L PREROUTING -v | grep "${IFNAME} ";  ${IPTABLES} -L -v | grep DROP | grep "${IFNAME} "`

Для поднятия 3000 сессий, уходило более 30 минут и часть правил могла вовсе не добавится или не удалится скриптом.
По умолчанию если используется ключ -L то iptables резолвит IP адреса и пытается отобразить вместо них DNS имена, что занимает много времени, и чтобы это не происходило, нужно добавить еще ключ -n, а также на всякий случай я добавил ключ -w 20, который заставит отложить выполнение новых правил до 20 секунд если iptables уже занят выполнение другой команды:

IPTABLES="/sbin/iptables"
IPTABLES_WAIT="-w 20"
EXIST=`${IPTABLES} $IPTABLES_WAIT -t nat -n -L PREROUTING -v | grep "${IFNAME} ";  ${IPTABLES} $IPTABLES_WAIT -n -L -v | grep DROP | grep "${IFNAME} "`

После этого скрипт с iptables правилами начал отрабатывать мгновенно.
Так как старые правила не все выполнились, я проверил это посчитав некоторые командой:

iptables -n -L -t nat -v | grep DNAT | wc -l

И сверил с количеством сессий, правил явно было меньше, поэтому пришлось очистить все правила и перезапустить сессии чтобы скрипт /etc/ppp/ip-up отработал правильно, на этот раз при 3000 сессиях он сделал свою работу менее чем за минуту.
Замечу что в скриптах /etc/ppp/ лучше не использовать правила iptables.

Как я закрывал счет в польском Pecao банке

Однажды знакомая из Украины попросила меня помочь ей с закрытием счета в польском банке Pecao.
Она не собиралась ехать в Польшу и поэтому не могла посетить банк, поэтому я начал переписку с сотрудниками по email, который был указан в договоре, а также есть на официальном сайте.

В первом сообщении я спросил как можно закрыть счет в банке и сотрудник ответил что для этого нужно посетить банк, но можно также написать письменное обращение и отправить его вместе с банковской картой почтовой службой в отделение банка, в котором был открыт счет.

Читать далее «Как я закрывал счет в польском Pecao банке»

Проблема с розовым искажением видео в Adobe Premiere

Однажды делал проект в Adobe Premiere и понадобилось вытащить видеокарту, после того как я ее вытащил, начал использовать интегрированную в процессор Intel HD Graphics 630 и у меня возникла проблема с изображением.

Читать далее «Проблема с розовым искажением видео в Adobe Premiere»

Как изменить hostname в Linux

Приведу пример смены hostname в Linux.

Сначала переключимся на root пользователя или добавим «sudo» перед командами.
Посмотрим текущий hostname:

Читать далее «Как изменить hostname в Linux»

Решение «Internal Server Error» при открытии Nextcloud

Недавно переносил Nextcloud с одного сервера на другой и при его открытии, заметил в браузере следующую ошибку:

Internal Server Error

The server encountered an internal error and was unable to complete your request.
Please contact the server administrator if this error reappears multiple times, please include the technical details below in your report.
More details can be found in the server log.

В моем случае ошибка возникла из-за поврежденной MySQL базы данных, поэтому я восстановил её из другой резервной копии и Nextcloud открылся.
Предполагаю что такая же ошибка может возникнуть когда база данных Nextcloud существует, но пуста.

Смотрите мою статью:
Установка Nextcloud в Ubuntu

Решение MySQL ERROR 1055 (42000)

Недавно выполнял необходимые SQL запросы и заметил следующую ошибку:

ERROR 1055 (42000): Expression #4 of SELECT list is not in GROUP BY clause and contains nonaggregated column 'database_name.table_name.column_name' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by

Читать далее «Решение MySQL ERROR 1055 (42000)»

Как увидеть процесс импорта SQL файла?

Для того чтобы видеть процесс импорта SQL файлов я использую утилиту Pipe Viewer.
Pipe Viewer очень полезен особенно когда SQL файл большого размера, позволяет примерно оценить оставшееся время до завершения импорта файла, отображает процесс импорта в процентах и перешедшее время.

Читать далее «Как увидеть процесс импорта SQL файла?»