среда, 8 января 2014 г.

Выборочная отмена изменений в конфигурации сервера, которые были сделаны давно

Когда-то давно я устанавливал pnp4nagios, чтобы решить что я буду использовать для мониторинга изменений параметров своего домашнего сервера. В тот раз я выбрал на эту роль Munin, но удаление уже ненужного pnp4nagios отложил до лучших времен. Сейчас есть свободная минутка и я решил потренироваться в выборочной отмене изменений конфигурации сервера.

Сначала удаляю пакеты, принадлежащие pnp4nagios и затем конфигурацию всех пакетов, которые были автоматически установлены для pnp4nagios.

$ sudo aptitude purge '~i pnp4nagios'
$ sudo aptitude purge '~c'

Теперь нужно отменить изменения в /etc, которые были сделаны для интеграции уже установленного Nagios с pnp4nagios. Для контроля за изменениями в /etc у меня используется etckeeper, но поскольку я не помню когда и какие изменения я внес, то пробую поискать в истории изменений.

$ sudo etckeeper vcs log | grep -B3 -i pnp4nagios
набор изменений:  281:1d3749d4f348
пользователь:     andrey@server.home.tataranovich.com
дата:             Wed May 08 16:03:27 2013 +0300
сводка:           Before pnp4nagios debugging.
--
набор изменений:  280:e44540a69bf4
пользователь:     Andrey Tataranovich 
дата:             Wed May 08 16:02:33 2013 +0300
сводка:           Installed pnp4nagios.

Итак, pnp4nagios я устанавливал весной прошлого года. Поскольку после этого уже было внесено много изменений, то просто откатить весь /etc на состояние предшествующее установке пакетов нельзя. Нужно отменить только изменения, связанные с настройкой интеграции nagios и pnp4nagios. Etckeeper всегда делает комит состояния /etc до и после работы менеджера пакетов - следовательно мне нужно найти комит, соответствующий состоянию до начала установки пакетов pnp4nagios. Для верности беру 5 ревизий, предшествующих e44540a69bf4.

$ sudo etckeeper vcs log -r e44540a69bf4~5: -l 6
набор изменений:  275:ad2066d36826
пользователь:     @server.home.tataranovich.com
дата:             Sun May 05 06:54:28 2013 +0300
сводка:           daily autocommit

набор изменений:  276:15ddfe25a664
пользователь:     @server.home.tataranovich.com
дата:             Tue May 07 06:31:12 2013 +0300
сводка:           daily autocommit

набор изменений:  277:a7dd8e2fa616
пользователь:     @server.home.tataranovich.com
дата:             Wed May 08 06:42:30 2013 +0300
сводка:           daily autocommit

набор изменений:  278:b24e999300fe
пользователь:     andrey@server.home.tataranovich.com
дата:             Wed May 08 09:30:35 2013 +0300
сводка:           saving uncommitted changes in /etc prior to apt run

набор изменений:  279:6107c041a05b
пользователь:     andrey@server.home.tataranovich.com
дата:             Wed May 08 09:30:47 2013 +0300
сводка:           committing changes in /etc after apt run

набор изменений:  280:e44540a69bf4
пользователь:     Andrey Tataranovich 
дата:             Wed May 08 16:02:33 2013 +0300
сводка:           Installed pnp4nagios.

В данном случае меня интересует b24e999300fe, который был зафиксирован перед вызовом apt. Теперь осталось получить все изменения в /etc/nagios3, сделанные после.

$ sudo etckeeper vcs diff -r b24e999300fe: /etc/nagios3 > /tmp/pnp4nagios.diff

Теперь нужно проверить diff-файл /tmp/pnp4nagios.diff - возможно туда попали лишние изменения, которые не связаны с интеграцией pnp4nagios - у меня такие были и я отредактировал файл, чтобы он содержал только нужные мне изменения. В результате получилось так:

cat /tmp/pnp4nagios.diff 
diff -r b24e999300fe -r 024b430644d3 nagios3/conf.d/generic-host_nagios2.cfg
--- a/nagios3/conf.d/generic-host_nagios2.cfg   Wed May 08 09:30:35 2013 +0300
+++ b/nagios3/conf.d/generic-host_nagios2.cfg   Wed Jan 08 09:36:12 2014 +0300
@@ -15,5 +15,6 @@
                notification_period             24x7
                notification_options            d,u,r
                contact_groups                  admins
+       action_url                      /pnp4nagios/graph?host=$HOSTNAME$
         register                        0       ; DONT REGISTER THIS DEFINITION - ITS NOT A REAL HOST, JUST A TEMPLATE!
         }
diff -r b24e999300fe -r 024b430644d3 nagios3/conf.d/generic-service_nagios2.cfg
--- a/nagios3/conf.d/generic-service_nagios2.cfg        Wed May 08 09:30:35 2013 +0300
+++ b/nagios3/conf.d/generic-service_nagios2.cfg        Wed Jan 08 09:36:12 2014 +0300
@@ -22,5 +22,6 @@
                notification_period             24x7
                notification_options            w,u,c,r
                contact_groups                  admins
+       action_url                      /pnp4nagios/graph?host=$HOSTNAME$&srv=$SERVICEDESC$
         register                        0       ; DONT REGISTER THIS DEFINITION - ITS NOT A REAL SERVICE, JUST A TEMPLATE!
         }
diff -r b24e999300fe -r 024b430644d3 nagios3/nagios.cfg
--- a/nagios3/nagios.cfg        Wed May 08 09:30:35 2013 +0300
+++ b/nagios3/nagios.cfg        Wed Jan 08 09:36:12 2014 +0300
@@ -248,6 +248,7 @@
 
 #broker_module=/somewhere/module1.o
 #broker_module=/somewhere/module2.o arg1 arg2=3 debug=0
+broker_module=/usr/lib/pnp4nagios/npcdmod.o config_file=/etc/pnp4nagios/npcd.cfg
 
 
 
@@ -832,7 +833,7 @@
 # performance data.
 # Values: 1 = process performance data, 0 = do not process performance data
 
-process_performance_data=0
+process_performance_data=1
 
 


Пробуем отменить этот "патч".

$ cd /etc
$ sudo patch -p1 -R --dry-run < /tmp/pnp4nagios.diff 
patching file nagios3/conf.d/generic-host_nagios2.cfg
patching file nagios3/conf.d/generic-service_nagios2.cfg
patching file nagios3/nagios.cfg

Проверка завершилась успешно и теперь можно применить изменения и зафиксировать их в etckeeper.

$ sudo patch -p1 -R < /tmp/pnp4nagios.diff
patching file nagios3/conf.d/generic-host_nagios2.cfg
patching file nagios3/conf.d/generic-service_nagios2.cfg
patching file nagios3/nagios.cfg
$ sudo service nagios3 check && service nagios3 restart
$ sudo etckeeper commit

воскресенье, 5 января 2014 г.

Печать на конвертах для CD/DVD дисков

Чтобы украсить диск с записью утренника в детском саду у ребенка, я решил освоить печать на бумажном конверте для CD/DVD дисков. Я имею ввиду те конверты для CD/DVD дисков, которые целиком из бумаги - конверты с прозрачным окошком не подойдут! (не пытайтесь печатать на конвертах с прозрачным окошком в лазерном принтере - скорее всего ваши действия приведут к дорогостоящему ремонту).

Размер конверта 125x125мм и первым делом я уменьшил размер подающего лотка в принтере, чтобы он ровно держал конверт и не давал ему смещаться. После этого я создал новый документ в LibreOffice и изменил свойства страницы документа (Формат / Страница)


Подобные настройки печати дают область печати размером 105x105мм.

Далее создается макет страницы - у меня получилось примерно так


По окончании в лоток принтера кладется конверт (карман конверта должен быть закрыт и направлен внутрь принтера) и выполняется печать. Результат получился вполне приличным.

пятница, 3 января 2014 г.

Отключение показа new tab page в Firefox

При создании нового таба в Firefox показывается страница с превьюшками наиболее посещаемых страниц. Мозиловцев уже как-то ругали за публичный показ важной/приватной информации, после чего firefox перестал добавлять превью для https страниц и снизил качество самих превью.

Лично мне не нравится сама идея такого показа. Чтобы отключить эту страницу, нужно:
  • зайти в расширенные настройки "about:config" в строке браузера;
  • согласиться с предупреждением (если оно у вас еще включено);
  • найти параметр browser.newtabpage.enabled (boolean) и установить его значение в false.
После этого браузер будет показывать чистую страницу при создании нового таба.

вторник, 31 декабря 2013 г.

Любую хорошую идею можно испаганить говеной реализацией

DISCLAIMER: Этот пост содержит эмоции и переживания по поводу бесцельно потраченных часов на борьбу с дохлым железом. Если вам не нравится сей жанр - не читайте дальше.

Долгой жизни людям, которые экономят пару баксов на реализации порта стандарта IEEE1394 (i.Link или FireWire их еще называют) и делают устройства, которые можно подключать только выключенными (желательно чтобы другое устройство было также выключенным). Это при том, что сам интерфейс IEEE1394 подразумевает поддержку hotplug на электрическом уровне.

Уже вторая miniDV камера, которая мне попадает в руки, с выжженным интерфейсом FireWire и компьютер ее либо не видит вообще, либо валятся ошибки и все равно ничего не работает. При том, что все остальные функции в камерах работает отлично (создается ложное впечатление, что камера полностью рабочая). Вот только сбросить отснятый материал для дальнейшей обработки в хорошем качестве больше возможности нет!

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

Если поискать в интернете, то больше всего нареканий на горелые порты FireWire похоже у Sony, про остальных сильно не искал. Знающие люди говорят, что порт может сгореть даже если камеру подключать к выключенному компу при выключенной камере. И причина скорее всего в статическом электричестве (похоже чаще всего порты дохнут во время отопительного сезона из-за сухого воздуха и множества одежды, которая порождает приличные статические заряды).

суббота, 28 декабря 2013 г.

Что-то новенькое в учете электроэнергии

Сегодня был на стройрынке в Ждановичах и в одном павильоне заметил интересный счетчик электроэнергии (прошу прощения за посредственные снимки - спешил да и камера в моем телефоне далека от совершенства)


Интересность заключается в какой-то карточке, которая торчит из счетчика. Я не смог расспросить продавца, что это за карточка и для чего она нужна, поскольку посетителей было много и мне самому нужно было спешить.

Может кто-то знает что это такое и что будет, если карточку извлечь из счетчика?

Ошибка C:32:11 в камере Sony Handycam DCR-HC38

Этот пост ориентирован на технически грамотную аудиторию. Если вы не обладаете необходимыми навыками - не пытайтесь повторить описанное. Я не несу никакой ответственности за ваши ошибки или возможный ущерб, возникший в следствии попытки повторить описанное.


В этом году у старшего ребенка первый утренник в детском саду. Поскольку централизованной съемки мероприятия не планировалось, то я позаимствовал у друга его старенькую камеру. Я долго не мог решить, нужна ли нам своя видеокамера вообще, поскольку опыт знакомых показывает что снимают ими очень редко (особенно в свете достижений современных цифровых фотоаппаратов/смартфонов).

За неделю до утренника я решил проверить работу камеры и немного потренироваться в операторском искусстве. Уже несколькими минутами позже я радовался, что устроил тест-драйв заблаговременно - после второго открывания кассетной деки последняя напрочь отказалась закрываться. При этом на экранчике камеры маячит ошибка C:32:11. Чтение раздела troubleshooting в инструкции и поиск в интернете дал массу возможных причин этой проблемы и соответственно решений, но лично мне очень помог этот тред.

Насколько я понял из обсуждения и рассматривая механизм кассетной деки - механизм выдвинулся слишком высоко и теперь не срабатывает защелка, которая служит триггером для механизма закрывания деки. По рекомендациям в треде я пробовал несколько раз ресетить камеру, подключать и отключать зарядное устройство (так рекомендует инструкция), но ничего из перечисленного не решило проблему.

После я решился на немного радикальные действия, поскольку владелец камеры более не интересовался ее судьбой, и если бы она не пережила операцию, то просто бы отправилась в мусорный бак.

Если вам не безразлична судьба вашей камеры, то не пытайтесь повторить описанное ниже - вполне возможно, что вы значительно усугубите ситуацию. Обратитесь в авторизованный сервис-центр для ремонта!

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

Перед началом нужно отключить камеру от сетевого зарядного устройства и отсоединить аккумулятор. После я подключил два провода к обычной пальчиковой батарейке и с помощью супруги подключил провода к моторчику привода (на фотографиях ниже обозначена схема подключения батарейки к моторчику). Красной стрелкой обозначено место подключения положительного контакта батарейки, а белой стрелкой - место подключения отрицательного контакта.

Общий вид на кассетную деку и моторчик привода
Более крупный план моторчика
После касания проводами моторчика механизм ожил и немного опустился внутрь. Теперь момент истины - все лишнее отсоединено от камеры, аккумулятор подключен обратно, камера включена. Еще несколько секунд и привод деки самостоятельно закрывается. Я проделал еще несколько циклов открывания/закрывания и остался доволен результатом. Впоследствии я благополучно отснял весь утренник и повторения проблемы не было.

P.S. Уже позже в разговоре в владельцем камеры выяснилось, что она пролежала без дела больше двух лет и возможно это и стало причиной глюка.


Этот пост ориентирован на технически грамотную аудиторию. Если вы не обладаете необходимыми навыками - не пытайтесь повторить описанное. Я не несу никакой ответственности за ваши ошибки или возможный ущерб, возникший в следствии попытки повторить описанное.

пятница, 27 декабря 2013 г.

Postfix - отбрасывание почты, адресованной любому домену, кроме явно разрешенных

В процессе разработки или саппорта часто используются базы данных в которых содержится информация о реальных адресах электронной почты. Чтобы не допустить случайную отправку писем на реальные (клиентские) адреса в нашей локальной сети запрещены соединения на 25 порт к внешним серверам. Почту для внутренних серверов пересылает почтовый шлюз для которого открыта лазейка на 25 порт нашего внешнего почтового сервера. Таким образом почта может быть либо отправлена внутри локальной сети, либо на ящик, находящийся на нашем внешнем почтовом сервере.

Эта мера достаточно эффективна, но периодически приходят уведомления о недоставленных письмах. Когда их 1-2 в день с этим можно спокойно жить, но когда их становится 30-50 штук, то читать их нет смысла, а каждый раз удалять их из почтового ящика postmaster'а лениво.

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

Для реализации мне потребовалось создать файл карты /etc/postfix/transport, который выглядит примерно так:

example.local  :
example.com    :
example.org    :
*              discard: Not allowed destination - silently discarded

создать хешированый вариант карты

# postmap hash:/etc/postfix/transport

добавить в /etc/postfix/main.cf

transport_maps = hash:/etc/postfix/transport

и перечитать конфигурацию postfix

# service postfix reload

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

Dec 27 16:13:02 server postfix/discard[2717]: 55B574E300: to=, relay=none, delay=0.06, delays=0.05/0/0/0, dsn=2.0.0, status=sent (Not allowed destination - message silently discarded)