понедельник, 21 декабря 2015 г.

Проверка и чистка сертификатов

Ручной контроль
openssl s_client -connect addr:443 -ssl3
openssl s_client -connect addr:443 -tls1

Хорошая проверялка на проблемы и уязвимости

проверялка от Thawte

Чистилка от лишних сертификатов в цепочке (Symantec, Thawte, GeoTrust or RapidSSL certificate):
https://cryptoreport.thawte.com/checker/views/CrossCertRemove.jsp

(что плохого в SHA-1):

пятница, 4 декабря 2015 г.

guake: делаем постоянные имена у табов

http://unix.stackexchange.com/questions/45665/default-guake-tab-names

Самый простой вариант -- запустить
gconftool-2 --set /apps/guake/general/use_vte_titles --type boolean false
тогда новые терминалы будут с именем Terminal #(номер), и имена сами меняться не будут.

Вариант чуть сложнее, требующий аж 2 строки кода: в функции on_terminal_title_changed надо добавить проверку какого-либо признака, только надо выбрать такое правило, чтобы на очередной автосмене имени это самое имя не залочилось. Например, "!" в начале строки выглядит вполне рабочей маской. Находим файл guake:
which guake
и правим от рута. Находим строку вида
    self.tabs.get_children()[page].set_label(vte.get_window_title())
и меняем на
    if self.tabs.get_children()[page].get_label()[0] != "!":
        self.tabs.get_children()[page].set_label(vte.get_window_title())
(не забываем про корректные отступы, 1 отступ равен 4 пробелам)

Перезапускаем guake и лочим имя, установив например в !my_session_1

ЗЫ сразу советую в настройках поставить галку "show tab bar by default", раздел General. Основное преимущество guake именно заточенность под работу с табами.

среда, 2 декабря 2015 г.

rabbitmq: более удобная работа с данными через rabbitmqadmin

centos 6

Внимание, необходимо закрыть "лишние" порты (15672 или у старых версий 55672) и/или повесить только на внутренние интерфейсы, так же советую отключить логин guest и добавить нужные (точнее, сначала добавить, а уже потом отключать гостя)

среда, 18 ноября 2015 г.

received packet with own address as source address

received packet with own address as source address
1) баг ядра, в частности может быть с CentOS 6.4 2.6.32-358.2.1.el6.x86_64 - обновиться
2) проблемы с сетью, какой-то из свичей колбасит (искать и менять свич)
3) сеть - есть кольца. В частности, у нас было на сложной топологии на базе 3com 5500-EI при настройке QinQ, поиск будет долгим.
4) проблемы с linux bridge
http://forum.proxmox.com/threads/9183-new-install-eth0-received-packet-with-own-address-as-source
http://backreference.org/2010/07/28/linux-bridge-mac-addresses-and-dynamic-ports/
суть в том, что MAC для бриджа выбирается из наименьшего на связанных интерфейсах.

Now, by default bridge interfaces in Linux use, for their MAC address, the lowest MAC address among the enslaved interfaces. So if the newly created interface has a lower MAC, the bridge changes its MAC address and uses that of the new interface. When the guest is stopped, the tap interface is removed from the bridge and destroyed, at which point the bridge's MAC address has to change again. Depending on when and how often guests are started/stopped, the host's bridge interface may be changing its MAC address quite often.

Маловероятно на интел-картах с префиксом 00:1B и весьма вероятно на broadcom с префиксом 84.

Имеет смысл вместо bridge попробовать openvswitch, но уже готовые пакеты найти не удалось (пока?) и надо собирать свои пакеты.

четверг, 5 ноября 2015 г.

rsyslog: некоторые особенности настройки

Если надо в syslog писать из своей программы, казалось бы, выбрали любой local* (для примера выберём 0) и автоматом пишем в /etc/rsyslog.d/program что-то типа
local0.* /var/log/prog.log

Но эти сообщения будут попадать и в основной лог (messages, syslog). И красивое развёртывание начинает рассыпаться необходимостью править/заменять основной конфиг! В частности, в центос надо строку
*.info;mail.none;authpriv.none;cron.none                -/var/log/messages
заменить на
*.info;local0.none;mail.none;authpriv.none;cron.none                -/var/log/messages

пятница, 16 октября 2015 г.

3com 5500-EI сброс настроек

Сброс настроек делается или из бут-меню (Ctrl+B, 7), или через
system-view
reset saved
change self-unit to auto-numbering
rsa local-key-pair destroy
startup bootrom-access enable

http://serverfault.com/questions/297967/how-do-i-factory-reset-a-3com-5500g-ei

Если делать бут - нужен консольный кабель, распиновка
http://gswa.ru/blog/wp-content/uploads/2012/10/3com_5188-3836_pinout.png
параметры порта 19200, 8n1, no control
http://gswa.ru/blog/?p=808

или так
https://www.vmadmin.co.uk/networking/81-hp-3com/358-reset-3com-switch-to-factory-defaults-forgot-password



среда, 14 октября 2015 г.

screen: несколько примеров

Что делать, когда нужно выполнить несколько команд?
Раньше была опция -t (она есть и сейчас, "заголовок сессии", но работала чуть иначе), в более поздних системах -d -m -S
-d -m это старт в "detached" режиме, то есть без подключения к консоли, например в стартап скриптах
-S задаёт имя сессии, показывается через screen -list
пример:
screen -d -m -S test /some/script
после завершения скрипта скрин закроется.

вторник, 6 октября 2015 г.

zfs on linux - centos 6

http://zfsonlinux.org/epel.html
оф дока
Разумеется, не полная.

Надо понимать, что нет полной интеграции, поэтому нельзя создать пул целиком на диск, только на конкретные разделы, что для меня означает потерю половины функционала. Вроде как на данный момент нет grub-а с поддержкой boot и корня на zfs.

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

Немного маразма от supermicro

Где-то про..теряли несколько рельс (rails) под корпус типа SC-813, решили заказать новые. И началась веселуха: официально есть 3 модели рельс
Рельсовые Крепления MCP-290-00052-0N-BULK
MCP-290-00054-0N
MCP-290-00056-0N
-
-
-
25.6" to 33.05" outer rail, quick, для 1U 17.2" W chassis (10 sets/pack)
25.6" to 33.05" rail set, quick/quick, для 1U 17.2" W chassis
19" to 26.4" outer rail, quick, для 1U 17.2" W chassis
(краткий пересказ - первое это комплект из 10 длинных рельс, второе - просто длинные, третье - короткие, под мелкие стойки)
813 и 815 по рельсам совместимы.
http://www.supermicro.ru/products_spec_942.html

А теперь веселуха. Именно под указанными партномерами что-либо найти проблематично, зато тьма предложений по "комплектному" партномеру, например CSE-PT52L. А тут становится ещё веселее, так как они бывают PT51(L) и PT52(L), то есть до 4 моделей. И даже у реселлера микры - Depo - они в итоге были заказаны как PT52L. И похоже, что 51 и 52 несовместимы.
Вот такие пироги.


понедельник, 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

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

RabbitMQ: Highly Available Queues

Сделать high availability несложно, но нюансы далее.
Быстрый старт.

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

couchbase: получить список вьюх

http://[localhost]:8091/pools/default/buckets/[bucket-name]/ddocs

дока
http://docs.couchbase.com/admin/admin/REST/rest-ddocs-get.html

Небольшой бонус: синхронизатор вьюх
HOST=''
HOST_TO=''
AUTH='-u Administrator:pass'
BUCKET=''
for i in `curl ${AUTH} -s http://${HOST}:8091/pools/default/buckets/$BUCKET/ddocs |sed -e 's#/#\n#g' |egrep "^_design"|sort|uniq| awk -F '%2F' '{print $2}'` ; do
        curl $AUTH -s "http://${HOST}:8092/$BUCKET/_design/$i" > $i.ddoc
        curl $AUTH -s -X PUT -d @${i}.ddoc -H 'Content-Type: application/json' "http://${HOST_TO}:8092/$BUCKET/_design/$i"
done

nginx+pootle

Pootle - это система на базе django, помогающая с переводом .po файлов на разные языки, в том числе отслеживание изменений.
Поскольку это питон, желательно использовать uWSGI и nginx.

четверг, 25 июня 2015 г.

git и bitbucket = беспарольная работа

Сделали клон какого-то репозитария, и активно с ним работаем, но ввод пароля утомляет. Что делать? Можно настроить беспарольный вход по ssh ключам.

1) создадим ключи. Делаем от того пользователя, от которого будем работать, то есть не рута.

ssh_keygen -b 2048 -N '' -f ~/.ssh/bitbucket
cat >> ~/.ssh/config <<EOF
Host bitbucket.org
  User git
  IdentityFile ~/.ssh/bitbucket
EOF

chmod 0600 ~/.ssh/config
cat ~/.ssh/bitbucket.pub

2)
вывод - на битбакет (публичный ключ), раздел настройки (manage) - security - SSH keys - add key
User git - не меняем, так и должно быть, актуальный юзер указывается в пути.

Если надо сделать ключ для деплоя (только для чтения), то добавляется он в другое место - открываем репозиторий, слева внизу settings, там в Deployment keys придумываем имя ключа (оно же будет логином) и вставляем ключ, полученный выше.

3) проверка
ssh -T git@bitbucket.org

Если что-то не так, можно руками добавить после -T: -i (какой файл использовать)

Нормальный вывод:
authenticated via a deploy key.


You can use git or hg to connect to Bitbucket. Shell access is disabled.

This deploy key has read access to the following repositories:

и дальше список, куда можно логиниться. Смотрим интересующие нас репы и копируем/запоминаем первую часть до двоеточия (:), понадобится дальше.

4) Использование
git clone ssh://git@bitbucket.org/(тут пишем/вставляем нужную репу, выбранную выше)

хотя если в .ssh/config есть User git, то из клона можно убрать git@

Линки
https://confluence.atlassian.com/display/BITBUCKET/Add+an+SSH+key+to+an+account
https://confluence.atlassian.com/display/BITBUCKET/Set+up+SSH+for+Git
https://confluence.atlassian.com/display/BITBUCKET/Use+deployment+keys
http://jeka.by/post/1051/setup-ssh-keys-for-bitbucket-github/ - с картинками

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

bridge on boot

При сборке мостов, например для виртуализации, часто требуется автозагрузка каких-то мостов на старте системы.
Управление - через brctl, пакет bridge-utils, ставим через yum или apt-get

четверг, 11 июня 2015 г.

keepalived

Есть разные методы для балансировки 1 адреса между несколькими машинами, и один из методов - VRRP, и его реализация в линуксе keepalived

среда, 3 июня 2015 г.

Basic Couchbase querying for SQL people

http://hardlifeofapo.com/basic-couchbase-querying-for-sql-people/

Хотя я бы советовал подумать, прежде чем выбрать их продукт -- глюков много, на почти пустых бакетах может выползать memcache с загрузкой ядра на 100%, пока не снимешь его, beam.smp постоянно что-то пилят на процессоре даже с маленькими объемами бакетов и полным отсутствием запросов... Сырая система, а уже 4 версия на подходе.
С другой стороны, по 5 тысяч гет запросов в секунду на 3.0.1 вполне выдать может. Если бы не пачка глюков...

2.5" to 3.5" - for hotswap backplain

Все бытовые переходники для установки 2.5" дисков в 3.5" отсек предполагают, что кабели подключаются руками и точная позиция не важна. Но бывает нужно поставить 2.5" диск в сервер, а производитель сервера не предоставляет таких салазок вообще, или хочет за них бешеные деньги, и что делать?

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

mint: обновляемся с 16 на 17

Предварительно имеет смысл сделать копию раздела /, если все данные типа /var, /home вынесены отдельно, например

Далее, делаем бэкап нужных данных (обязательно! Мало ли что не так), и списка софта на случай "ой всё"
mintBackup в Menu -> Administration -> Backup Tool
http://community.linuxmint.com/tutorial/view/2
Также в /home/* стоит сделать копию каталога .config

Обновляем систему  до последней версии
# apt-get update
# apt-get upgrade

Теперь в /etc/apt/ делаем замену
petra -> qiana
saucy -> trusty

apt-get update

и повторяем до отсутствия ошибок
apt-get dist-upgrade
apt-get install -f
у меня это было около 15 прогонов.

при необходимости делаем dpkg-reconfigure -a

Ребут, ещё раз
apt-get dist-upgrade и если всё хорошо, то можно сделать apt-get autoremove

Обращаем внимание на софт, для которого нет версий под новый дистр.

Помним, что официально есть только 1 метод обновления: бэкап, переустановка с нуля, установка софта, возврат данных (проще, когда /home отдельный)

How to restore LVM Volume Group metadata from a previous configuration

http://wiki-ux.info/wiki/How_to_restore_LVM_Volume_Group_metadata_from_a_previous_configuration

выделение сип-специфики в отдельный блог

Все (новые) специфичные вещи типа freeswitch-а и прочего sip-а плавно переедут в отдельный блог
http://dragonflybsd-sip.blogspot.ru/

Питон-часть, в том числе для фрисвича, ведётся тоже в другом месте
http://dragonflybsd-scripts.blogspot.ru/

Это сделано, чтобы не мешать основному блогу постами "не по теме".
Есть шанс, что некоторые посты переедут в блоги выше, если в отпуске будет на это время и желание.

lvm: сделать клон logical volume

Как сделать клон lv раздела, в том числе перенести его в другой vg

Получим все разделы, чтобы проверить размеры, метки, пути..
# lvdisplay

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

как получить цифру load average, несколько методов

Пожалуй, самый простой
cat /proc/loadavg |awk '{print $1}'

оно же
cat /proc/loadavg |cut -d ' ' -f 1

Вариант более универсальный, не только для линукса
uptime | sed -e 's#^\(.*\) averages\{0,1\}: \(.*\), \(.*\), \(.*\)$#\2#'

Можно ещё парсить w, но там взять первую строку и дальше суть та же.
Некоторые придумывают мегаконструкции типа
uptime |awk -F 'load average:' ' {print \$2}'| awk -F '[ ]'  ' {print \$2}' | awk '{gsub(",", "");print \$1}'
но это разве что полезно для "а я вот так ещё умею" и прочего писькомерства. И всё-равно данная строка линь-онли.

пятница, 3 апреля 2015 г.

Учимся писать .spec файлы

Можно много лет использовать систему, используя только уже готовые rpm файлы, но однажды приходится ставить и распространять что-то своё, не забивая при этом все сервера компиляторами и служебными утилитами. И возникает необходимость собрать свои пакеты. А потом - поднять локальный репозиторий.

А пока позаботимся о первой части. При возможности для сборки нужен отдельный сервер и отдельный юзер, чтобы не забивать рабочие машины (сервера), на нём же безопасно тестировать установку и удаление этих пакетов, помним баги с лишним пробелом в rm -rf / usr.

среда, 25 марта 2015 г.

Отправка почты с вложениями из консоли

Простой вариант
cat file.txt | mail -s "text file" your@domain.com
отправит файл "как есть", в теле письма. Но так не получится отправить картинки или несколько файлов.

понедельник, 23 марта 2015 г.

Ставим OpenSSL 0.9.8 на debian wheezy

Некоторые приложения хотят устаревшую ветку openssl - 0.9.8, например
 libcouchbase2-core : Depends: libssl0.9.8 (>= 0.9.8k-1) but it is not installable

Фикс: ставим бэкпорт под squeeze:

Под 64 бита
$ wget http://ftp.us.debian.org/debian/pool/main/o/openssl/libssl0.9.8_0.9.8o-4squeeze14_amd64.deb
$ sudo dpkg -i libssl0.9.8_0.9.8o-4squeeze14_amd64.deb

пятница, 13 марта 2015 г.

Где взять portaputty

Есть полезный и известный набор утилит для работы через ssh, tty, telnet под винду. Лежит тут:
http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html
последняя версия 0.64

 К большому сожалению, она пишет в реестр, поэтому её невозможно использовать с нескольких машин, а потеря реестра означает потерю всех настроек. Есть 3 варианта избавиться от этой гадости:
1) putty portable на portableapps.com - версия свежая, но для работы нужна обёртка. Неизвестна стабильность при работе в связке с pytty connection manager и аналогами.
2) portaputty. Сами исходники "отучены" лезть куда не нужно, все настройки на диске, переносимость хорошая, работает с менеджерами. Долгое время обитало на http://code.google.com/p/portaputty/, но сейчас удалено или закрыто. Есть клон/копия на https://github.com/potatosalad/portaputty, но исходники 8-летней давности, версия 0.60.
3) KiTTY, http://www.9bis.net/kitty/?zone=ru
KiTTY — это модифицированная версия программы PuTTY версии 0.64
По умолчанию так же гадит в реестр, но есть возможность изменить поведение: http://www.9bis.net/kitty/?page=Portability&zone=ru
Увы, полноценного менеджера сессий в комплекте так и нет.

понедельник, 2 марта 2015 г.

screen: Cannot open your terminal '/dev/pts/0' - please check

Или не хватает прав для подключения к скрину (например рутовому не от рута), или, если это openvz enter ... - просто нет такого терминала, особенность работы с ovz enter. Фикс:
script /dev/null
screen ...

Если же проблема с работой с Multiuser - то не забываем делать acladd пользователям.

линки

понедельник, 2 февраля 2015 г.

sip: μ-law или A-law?


Оба вида *law кодеков - это 2 алгоритма для G.711
Общие характеристики:
8-ми битная компрессия PCM голоса
частота дискретизации 8000 кадров/секунду и 8 bit/кадр.
поток 64 kbit
патент на кодек давно истёк, поэтому нет никаких сборов и ограничений.

Слабое сжатие даёт (относительно) большую нагрузку на канал, но очень мало на процессор, что хорошо для слабых встраиваемых систем, не требуется DSP.

μ-law, он же ulaw, PCMU, в sdp номер 0, стандарт для америки.
В сравнении с alaw ulaw даёт несколько больший динамический диапазон сигнала, но чуть большие искажения для слабых сигналов (1)

a-law, он же alaw, PCMA, в sdp номер 8, полее поздний, изначально предназначен для компьютерной обработки процессов (2), стандарт для европы.

Поскольку РФ - европа, предпочтение стоит отдать кодеку alaw.

(1) http://xgu.ru/wiki/ulaw

(2) https://ru.wikipedia.org/wiki/G.711
http://www.ti.com/lit/an/spra267/spra267.pdf
http://www.voip-sip.org/g-711-u-law-or-a-law/

вторник, 13 января 2015 г.

CentOS: Скачать (s)rpm пакеты

Бывает так, что нужно скачать ряд пакетов, для оффлайн обновления, при узком/дорогом канале и нескольких серверах, итд.
Можно качать через wget, но у многих закрыт листинг каталогов, то есть нужно сделать yum search..., получить полное имя и уже ему wget, но быстрее и проще для этой цели использовать саму систему yum, попутно получить разрешение зависимостей.

понедельник, 12 января 2015 г.

database и schema в postgres и mysql (с хабра)

http://habrahabr.ru/post/246339/#comment_8190995
Хинт: в mysql - database == schema, в postgres schema==namespace ~ mysql database, тогда как postgres database - некий глобальный контейнер для схем.
Примерно так же у oracle и без канистры водки порой сложно разобраться, что где и как.