понедельник, 14 сентября 2015 г.

Простой способ подключения к консольному порту

Иногда требуется подключиться к устройствам типа VoIP гейтов, свичей и проч, и начинается -- а какую программу выбрать, а какие переменные выставить, а какой конфиг-файл написать...

Был найден самый простой и удобный способ подключения без всяких левых и неудобных подключалок:
screen /dev/ttyUSB0
Всё.

При необходимости указать скорость - делается так
screen /dev/ttyUSB0 19200

Для рабочих станций и debian-based дистрибутивов - вариант
apt-get install putty
и будет привычный и удобный универсальный клиент, известный всем putty. Но требует Х-ов.

понедельник, 7 сентября 2015 г.

RTP: какие порты надо разрешить

Чтобы пропускать RTP, нужно разрешать протокол UDP. Встаёт вопрос, какие порты нам нужны. И получается достаточно печальная картина: в RFC (1889, который заменили на 3550), не прописаны диапазоны портов. И хотя обычно используется диапазон 16384-32767, всякая китайчанина и прочий энтерпрайз типа циски могут использовать вообще весь диапазон. Хотя имеет смысл ограничиться диапазоном 1024-65535, так как порты ниже - привелигерованные.

This is no means guarantees that the SIP provider will also. They frequently will use ports from anywhere in the 4000-40000 range. I would probe Asterisk about their UDP port range.
https://supportforums.cisco.com/discussion/10718041/rtp-port-range

Помним, что RTP обычно делит пару с RTCP

Единственное ограничение состоит в том, что соединение проходит с использованием чётного номера, а следующий нечётный номер используется для связи по протоколу RTCP.
https://ru.wikipedia.org/wiki/RTP

так что начало реального диапазона по стандарту должно быть чётным (1024, 16384), а окончание - нечётным (65535, 32767,...)

ЗЫ Оказалось, нередко астериски используют диапазон 10000-20000, также в некоторых мануалах 20000-30000, но этот диапазон полностью входит в 16384-32767

вторник, 1 сентября 2015 г.

пятница, 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