пятница, 28 августа 2015 г.

sudo: аргументы и wildcard

Как прописать права для sudo пользователю так, чтобы можно было использовать аргументы? Простая запись вида /sbin/ifconfig позволит только запустить команду без аргументов, а на любой аргумент будет запрашивать пароль.
В таком случае, надо прописывать команду как
/sbin/ifconfig *

Замечание:
 Wildcards in command line arguments should be used with care.  Because
 command line arguments are matched as a single, concatenated string, a
 wildcard such as ‘?’ or ‘*’ can match multiple words.
So, only one wildcard is needed per command.

Таким образом, одной * достаточно.
Учитываем, что
   Wildcards
     sudo allows shell-style wildcards (aka meta or glob characters) to be used in host names, path names and command line arguments in the sudoers file.  Wildcard matching is done via the POSIX glob(3) and fnmatch(3) routines.  Note that these are not regular expressions.

пятница, 14 августа 2015 г.

mint 17: добавляем свежий флэш

Штатно идёт пакет mint-flashplugin аж от 2011 года (дистр 2015!), с флэшем 11.2.ххх
Даже di.fm и тот отказывается играть на такой старой и дырявой версии.

Суть в том, что adobe забросила свободную версию и её подхватил гугл, назвав pepper flash. Поставим
sudo apt-get install pepperflashplugin-nonfree

Далее (при необходимости - у меня chromium, заработало и так):
sudo update-pepperflashplugin-nonfree --install

Перезапускаем хромиум, смотрим
chrome://plugins/
появился

Adobe Flash Player - Version: 18.0.0.233
Shockwave Flash 18.0 r0

Возможные проблемы:
после перезапуска флэш теряется, помогает переустановить пакет
sudo gedit /etc/chromium-browser/default,И в самом конце файла вставь следующую строчку:. /usr/lib/pepflashplugin-installer/pepflashplayer.sh,затем сохрани.
http://mintlinux.ru/forum/thread4772-1.html

также вариант
Строка . /usr/lib/pepflashplugin-installer/pepflashplayer.sh исчезает — перезаписывается/заменяется файл /etc/chromium-browser/default .
Оттуда же.
Для себя я решил проблему костылём, по принципу "Если гора не идёт к Магомету..." — в конфиге, постоянно откатывающемся, прописан путь к .so , ну так я этот путь и создал. В /usr/lib/ сделал ссылку (гуем, разумеется) на pepflashplugin-installer/ , обозвал её pepperflashplugin-nonfree

ЗЫ почему-то firefox обычно не теряет плагин, вариант тогда - перейти на него. Хотя вариант сомнительный.

понедельник, 10 августа 2015 г.

debian 7: сборка nginx в пакет

/etc/apt/sources.list.d/nginx.list:
deb http://nginx.org/packages/mainline/debian/ wheezy nginx
deb-src http://nginx.org/packages/mainline/debian/ wheezy nginx

сборка
cd /usr/src
apt-get source nginx && apt-get install build-dep nignx
cd nginx-(version)
cd debian
nano rules
правим правила configure
nano changelogs
добавить запись о новой версии (или просто поставить пакет на холд, чтобы его не обновило потом)
cd ../../
apt-get source -b nginx или из из папки исходников debuild -uc -us


четверг, 6 августа 2015 г.

сборка couchbase

что нужно:
https://github.com/couchbase/tlm
Смотрим, ничего не понимаем, ужасаемся, читаем эту заметку.
Предварительно подключаем epel для centos.

вторник, 4 августа 2015 г.

nginx и обработка POST параметров

Есть набор переменных, $arg_* и массив $args, но туда попадают только переменные из строки запроса (прежде всего это будут GET запросы, но и у POST могут быть). А что делать, если надо обработать POST запросы? Зачем? Например, есть некий софт, который запрашивает файл через post, надо получить имя и отдать его с диска. Только ради этого писать обёртку на любом языке, которая требует ресурсов, обслуживания, обновлений, проверки что оно всегда работает итд? А если эта прослойка не успела ещё запуститься или просто упала, а файл уже запросили? Всего-то дел, получить имя из запроса...
Увы, штатного метода нет, но благодаря модулям со сторонними языками это реализуемо, правда пока найдено только 2 метода.

tengine - nginx версия от taobao

https://github.com/alibaba/tengine/
http://tengine.taobao.org/

среда, 22 июля 2015 г.

FreeBSD, gsutil и костыли

Установка проста, "по мануалу"
cd /root
wget --no-check-certificate https://storage.googleapis.com/pub/gsutil.tar.gz
tar -zvxf gsutil.tar.gz
mkdir bin
cd bin
ln -s ../gsutil/gsutil

понедельник, 20 июля 2015 г.

zfs: подключаем лог записи и кэш (ZIL и l2arc)

ZFS можно существенно ускорить, если подключить кэши чтения и записи, но для этого требуется SSD, и лучше несколько.
О чём нужно помнить:

  • кэш записи будет сильно изнашивать диск(и), поэтому если делать серьёзно, то надо ставить SLC или eMLC диски, в зеркало
  • + сами диски обязаны иметь обвязку для сброса данных на флэш при отключении питания. То есть 99% бытовых дисков использовать себе дороже.
  • Кэш чтения - можно ставить и бытовые SSD, но лучше подбирать по большому числу IOPS и большой линейной скорости. Если денег много или очень много горячих данных - eMLC предпочтительнее.
  • диски кэша чтения в зеркало не объединяются, но учитывая логику работы - ошибка с SSD - читаем с основного массива, это не критично, только упадёт производительность.
  • при использовании аппаратных рейдов кэш чтения крайне желательно подключать в обход рейда, в набортный сата, при его наличии и соответствию минимум sata 3gbit стандарту, лучше сата 3 - 6Гбит.

четверг, 16 июля 2015 г.

Шаблоны zabbix

Где искать шаблоны (актуально 2.0+)

Официальная "хранилка". Не сказать что много чего есть, но начать можно оттуда
https://share.zabbix.com/

Форум, много чего есть, использовать поиск
Zabbix Cookbook

Вики, тоже можно заглянуть
https://www.zabbix.org/wiki/Main_Page

Русская ветка
https://www.zabbix.com/forum/forumdisplay.php?f=21

и например оттуда
Ubiquiti UniFi + zabbix
Интерактивная карта для Zabbix.

Прочие источники
Наверное, под 90% всего открытого выложено на github, например
https://github.com/jjmartres/Zabbix/tree/master/zbx-templates
https://github.com/kmomberg/pyZabbixSender

Как менять лимиты на лету

Есть ulimit, есть /etc/limits.conf, но для применения изменений надо перезапускать софт или перезагружать сервер.
Но можно менять и "на лету". Правда, для этого нужен util-linux не ниже 2.23, так что centos 6 и debian 7 в пролёте. Называется prlimit
prlimit --pid <pid> --<limit>=<soft>:<hard>

В более ранних версиях можно попробовать конструкцию вида
echo -n "Max processes=20000:191967" > /proc/`pidof mysqld`/limits

среда, 15 июля 2015 г.

zabbix-get: command not found

# zabbix_get
-bash: zabbix_get: command not found

Если поставить штатую репу, в совсем последних версиях _вдруг_ пропал zabbix_get. Причина? Теперь это отдельный пакет
yum install -y zabbix-get

вторник, 14 июля 2015 г.

mysqldump: убрать DEFINER из бэкапа

В некоторых версиях появилась бесполезная хрень называемая DEFINER, паразитирующая на CREATE VIEW, CREATE PROCEDURE.
Почему хрень? Потому что такой функционал востребован максимум в 5% бэкапов и должен включаться опционально, и штатно НЕ НУЖЕН. Так что 2 пути - выпиливать из кода или обработать дамп.
Первый шаг пропустим, второй - коды разные, синтаксис тоже. Коды 50017, 50013
пример на sed:
sed -i'' 's/DEFINER=[^*]*\*/\*/g' mydump.sql


http://stackoverflow.com/questions/9446783/remove-definer-clause-from-mysql-dumps

понедельник, 13 июля 2015 г.

Как получить свой айпи, через который уходят запросы в мир

ip -o -f inet a |awk -v iface="$(ip -o -f inet r get 8.8.8.8|awk '{print $5}')" '$2==iface{sub(/\/.*$/,"",$4); print $4}'может иметь смысл для скриптов, "куда биндиться".

Получить свой внешний адрес сложнее, прямых способов я пока не знаю, только через сервисы типа myip.com (подставить свой любимый), пример
curl -s myip.com | grep Client_IP | awk '{print $2}'

среда, 8 июля 2015 г.

snmp + agentX, быстрая настройка

Ставим net-snmp, net-snmp-utils
Если агент нам нужен только под 1 сервис - имеет смысл штатный хитрый конфиг переименовать, взяв за основу самый простой.

zabbix 2.4: The frontend does not match Zabbix database и далее

Запустили один не очень новый сервер с заббиксом и вылезло
Zabbix server will automatically upgrade the database
The frontend does not match Zabbix database. Current database version (mandatory/optional): 2020000/2020000. Required mandatory version: 2030000. Contact your system administrator.