equivs: фэйковые пакеты для Debian/Ubuntu
// Февраль 6th, 2017 // 1 Comment » // Debian, linux
Я люблю Debian за его замечательный пакетный менеджер apt, который сам разруливает все зависимости, и для установки софта обычно достаточно одной команды apt-get install <packagename>, но иногда бывает, что именно эта фишка заставляет биться головой об стену, когда пакеты из сторонних репозитариев начинают требовать неразрешимые зависимости, или когда вместе какой-то мелкой консольной утилитой весом в 20кбайт тащится половина Х-ов на 200мегабайт или MTA postfix/exim, там где это вообще не требуется.
Есть замечательная утилита, которая облегчает жизнь в таких ситуациях — equivs. equivs умеет создавать пустые пакеты с полным удовлетворением зависимостей, дабы удовлетворить жажду пакетного менеджера понаставить чего.
И так, допустим, нужно систему заставить думать, что у нас установлен MTA postfix, для начала установим equivs, как всегда это делается легко:
apt-get install equivs
Mikrotik проверка и переключение маршрута
// Январь 27th, 2017 // No Comments » // mikrotik, Network, routing, script
Ситуация: есть L2 транспорт и его резервный канал, на канале L2 софт использует адрес on-connected (см. рис.) 10.1.1.1, который в случаи обрыва L2 канала становится недоступным и нужно переключить маршрут на резервный канал.
Попытка реализовать стандартными средствами: создать два маршрута на адрес 10.1.1.1, один через основной канал с меньшей метрикой (больший приоритет) и второй с большей метрикой через резервный — не увенчалась успехом, т.к. первый маршрут не становился неактивны при падении линка даже при условии микротиковской фичи проверки наличия ARP. Было так:
/ip route add distance=10 dst-address=10.1.1.1/32 gateway=10.4.12.1 add distance=1 dst-address=10.1.1.1/32 gateway=ether1 check-gateway=arp
но не работало =(
Решение было написать скрипт, который проверяет наличие ARP записи и переключает маршрут
Continue Reading
Nginx ошибка «413 Request Entity Too Large»
// Ноябрь 4th, 2016 // No Comments » // nginx
Ошибка HTTP 413 — Request Entity Too Large Error означает, что клиент отправил слишком большой запрос на сервер. Причина настройки nginx по умолчанию, параметр client_max_body_size
равен 1m
, его и нужно изменить под свои потребности.
Директива client_max_body_size задаёт максимально допустимый размер тела запроса клиента, указываемый в строке «Content-Length» в заголовке запроса. Если размер больше заданного, то клиенту возвращается ошибка «Request Entity Too Large» (413). Следует иметь в виду, что браузеры не умеют корректно показывать эту ошибку.
Есть два варианта установки этой переменной глобально для всего сервера, тогда нужно вписать в секцию http или для определенного виртуального хоста, тогда вписать в секцию server. Стоит разумно относится к установке размера данной директивы, т.к. слишком большой размер является потенциальной уязвимостью для возможной атаки на ваш сервер, обычно достаточный размер от 5 до 32m.
В файле nginx.conf
, в нужную секцию http/server, добавить/изменить директиву:
http { ... client_max_body_size 32m; ... }
Debian tftpd
// Март 2nd, 2016 // No Comments » // Debian, linux, tftp
Устанавливаем клиент и сервер tftp
apt-get install tftpd tftp
Добавляем в автозагрузку inetd, в файле /etc/inetd.conf редактируем строку, которая начинается с tftp, в принципе она вполне правильная, но мне нравится другой путь для каталога файлов:
tftp dgram udp wait nobody /usr/sbin/tcpd /usr/sbin/in.tftpd /var/tftp
Перезапускаем inetd:
invoke-rc.d openbsd-inetd restart
Вот в принципе и все. Если что-то не так — проверяем, слушает ли демон порт:
netstat -lnp | grep :69
должен быть ответ похожий на этот:
udp 0 0 0.0.0.0:69 0.0.0.0:* 15838/inetd
Проверяем/правим права на каталог с файлами:
chown -R nobody /var/tftp
MySQL перенос пользователей и прав на другой сервер
// Март 1st, 2016 // No Comments » // MySQL
Сохраняем
MYSQL_CONN="-uroot -ppassword" mysql ${MYSQL_CONN} --skip-column-names -A -e"SELECT CONCAT('SHOW GRANTS FOR ''',user,'''@''',host,''';') FROM mysql.user WHERE user<>''" | mysql ${MYSQL_CONN} --skip-column-names -A | sed 's/$/;/g' > MySQLUserGrants.sql
восстанавливаем на другом сервере
mysql -uroot -p -A < MySQLUserGrants.sql