Archive

Archive for April, 2009

Многофункциональный концентратор доступа Cisco MC3810

April 30th, 2009 No comments

ciscoНовая серия устройств Cisco MC3800 позволяет организовывать совместную передачу разнообразного трафика (голос, факс, видео, данные) по одной сетевой магистрали. В качестве такой магистрали могут использоваться практически любые общественные и частные сети. В первом из серии устройстве Cisco MC3810 реализована полноценная поддержка существующих многопротокольных сетей, включая технологию ATM, которая обеспечивает более высокое качество при передаче разнородной информации.

В качестве магистральных технологий концентратор Cisco MC3810 поддерживает следующие протоколы:
ATM
Frame Relay
HDLC
TDM (E1/T1)

Подробное описание устройства

Заметки по использованию:

Просмотр интерфейсов:

1
2
3
4
5
router#show interfaces
router#show interfaces Ethernet0
router#show ip interface
router#show ip interface brief
router#show ip interface Ethernet0

Изменение отображения маски сети:

1
2
3
4
5
6
router#configure terminal
router(config)#line vty 0 4
router(config-line)#ip netmask-format ?
  bit-count    Display netmask as number of significant bits
  decimal      Display netmask in dotted decimal
  hexadecimal  Display netmask in hexadecimal

Таймаут бездействия терминала:

1
2
3
4
5
6
7
8
9
10
router#configure terminal
router(config)#line vty 0 4
router(config-line)#exec-timeout ?
  <0-35791>  Timeout in minutes
 
router(config-line)#exec-timeout 0 ?
  <0-2147483>  Timeout in seconds
  <cr>
 
router(config-line)#exec-timeout 0 0

Сохранение конфигурации:

1
2
router#copy running-config startup-config
router#write

Сохранение конфигурации на tftp-сервер:

1
router#copy running-config tftp://172.16.127.1/router.cfg

Сохранение конфигурации на ftp-сервер:

1
router#copy running-config ftp://login:password@case.net.ru/cisco.cfg

Включение ip-маршрутизации:

1
2
router#configure terminal
router(config)#ip routing

Просмотр таблицы маршрутизации:

1
router#show ip route

Установка шлюза по умолчанию:

1
2
router#configure terminal
router(config)#ip default-gateway 172.16.127.1

Установка dns-сервера:

1
2
router#configure terminal
router(config)#ip name-server 172.16.127.1

Добавление статического маршрута:

1
2
3
router#configure terminal
router(config)#ip route 131.108.230.0 255.255.255.0 131.108.240.2
router(config)#ip route 131.108.231.0 255.255.255.0 Ethernet0

Включение безклассовой маршрутизации:

1
2
router#configure terminal
router(config)#ip classless

Отключение http-сервера:

1
2
router#configure terminal
router(config)#no ip http server

Установка имени хоста:

1
2
router#configure terminal
router(config)#hostname cisco

Отчистка таблицы маршрутизации:

1
2
3
router#configure terminal
router(config)#clear ip route *
router(config)#clear ip route 131.108.230.0 255.255.255.0 131.108.240.2

Копирование образа ОС на tftp-сервер:

1
2
3
router#show flash:
    2  -rwx     4570692   Mar 1 1993 03:59:57 +03:00  mc3810-i-mz.122-32.bin
router#copy flash:mc3810-i-mz.122-32.bin tftp://172.16.127.1/mc3810-i-mz.122-32.bin

Настройка интерфейса:

1
2
3
4
router#configure terminal
router(config)#interface Ethernet0
router(config-if)#ip address 172.16.127.183 255.255.255.0
router(config-if)#no shutdown

Настройка синхронизации времени:

1
2
3
router#configure terminal
router(config)#ntp server 69.36.240.252 source Ethernet0
router(config)#ntp server 87.236.24.2 source Ethernet0 prefer

Просмотр синхронизации времени:

1
2
router#show ntp status
router#show ntp associations

Установка пароля для консоли (line console 0) или телнета (line vty 0 4):

1
2
3
4
5
router>enable
router#configure terminal
router(config)#line console 0
router(config-line)#login
router(config-line)#password hardpass

Удаление консольного пароля

1
2
3
4
5
router>enable
router#configure terminal
router(config)#line console 0
router(config-line)#no login
router(config-line)#no password

Удаление пароля Secret

1
2
3
router>enable
router#configure terminal
router(config)#no enable secret
Tags: ,

OTRS – Open Ticket Request System

April 21st, 2009 No comments

OTRS is an Open source Ticket Request System (also well known as trouble ticket system) with many features to manage customer telephone calls and e-mails. The system is built to allow your support, sales, pre-sales, billing, internal IT, helpdesk, etc. department to react quickly to inbound inquiries.

 

Используется менеджерами и суппортом Masterhost’а для обработки электронной почты.

Описание:
Журнал «Системный администратор» №58 (сентябрь, 2007 год).
Система управления запросами OTRS (стр. 18—22)
Автор: Сергей Яремчук.

Tags:

Визуализация данных с помощью Graphviz

April 21st, 2009 No comments

Graph Visualization Software from AT&T Laboratories and
Bell Laboratories (Lucent Technologies)

These programs licensed under the terms described in the web page at:

http://www.graphviz.org/License.php

The package contains:
dotty – customizable X windows graph viewer written in the Lefty editor
tcldot – customizable TCL/tk graph viewer written by John Ellson
dot – batch program for drawing directed graphs as hierarchies
neato – batch program for drawing undirected graphs using Kamada-Kawai
spring models

WWW: http://www.graphviz.org/

Установка:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
$ cd /usr/ports/graphics/graphviz
$ make showconfig
===> The following configuration options are available for graphviz-2.22.2:
     ICONV=on "Build with ICONV support"
     XPM=on "Build with XPM support"
     DIGCOLA=on "DIGCOLA features in neato layout engine"
     IPSEPCOLA=on "IPSEPCOLA features in neato layout engine"
     SMYRNA=off "SMYRNA large graph viewer"
     NLS=on "Build with gettext support"
     TK=off "Build with TK support"
     PANGOCAIRO=off "build with pangocairo support"
     RSVG=off "build with rsvg library"
     GTK=off "build with gtk plugin"
     GDK_PIXBUF=off "build with gdk pixbuf support"
     GNOMEUI=off "build with libgnomeui support"
     MING=off "Build with ming plugin"
     DEVIL=off "Build with devil plugin"
     GHOSTSCRIPT=off "Build with ghostscript plugin"
     PERL=off "Perl bindings (swig)"
     PHP=off "PHP bindings (swig)"
     PYTHON=off "Python bindings (swig)"
     RUBY=off "Ruby bindings (swig)"
     LUA=off "Lua bindings (swig)"
     TCL=off "TCL bindings (swig)"
     GUILE=off "Guile bindings (swig)"
===> Use 'make config' to modify these settings
$ make install clean

Создаем файл данных dots.txt. В файл добавлена строка с указанием шрифта, наче dot ругается что не может его найти.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
digraph "microdc2 build Dependencies" {
enode [fontname="/usr/local/www/data/temp/dot/Times.dfont"]
"gettext-0.17_1" -> "libiconv-1.11_1"
"gettext-0.17_1" -> "libtool-1.5.26"
"gmake-3.81_3" -> "gettext-0.17_1"
"gmake-3.81_3" -> "libiconv-1.11_1"
"libiconv-1.11_1" -> "libtool-1.5.26"
"libxml2-2.7.3" -> "gettext-0.17_1"
"libxml2-2.7.3" -> "gmake-3.81_3"
"libxml2-2.7.3" -> "libiconv-1.11_1"
"libxml2-2.7.3" -> "pkg-config-0.23_1"
"microdc2" -> "gettext-0.17_1"
"microdc2" -> "libiconv-1.11_1"
"microdc2" -> "libxml2-2.7.3"
"microdc2" -> "pkg-config-0.23_1"
"pkg-config-0.23_1" -> "gettext-0.17_1"
"pkg-config-0.23_1" -> "gmake-3.81_3"
"pkg-config-0.23_1" -> "libiconv-1.11_1"
}

Запускаем сборку:

1
$ dot -Tpng -o dots.png dots

Получилось:
dots

Tags:

Настраиваем SPF для Postfix и Bind

April 19th, 2009 No comments

Задача:

  • при приеме почты проверять SPF запись домена отправителя
  • прописать SPF запись для своего домена

Устанавливаем добавку для postfix’a:

1
2
$ cd /usr/ports/mail/postfix-policyd-spf
$ make install clean

Добавляем в /usr/local/etc/postfix/master.cf:

1
2
policy  unix  -       n       n       -       -       spawn
  user=nobody argv=/usr/local/sbin/postfix-policyd-spf

Добавляем в /usr/local/etc/postfix/main.cf:

1
2
3
4
smtpd_recipient_restrictions = ...
                               reject_unknown_sender_domain
                               reject_unauth_destination
                               check_policy_service unix:private/policy

После этого в заголовках входящих писем будет заголовок Received-SPF:

1
Received-SPF: softfail (case.net.ru: transitioning domain of globalevent.ru does not designate 77.113.141.27 as permitted sender) client-ip=77.113.141.27; envelope-from=thawsm@globalevent.ru; helo=apn-77-113-141-27.gprs.plus.pl;

Возникла проблема, при включенной проверке spf – spamooborona падает. Как решить пока не знаю. Вот лог:

1
Apr 19 12:18:18 case postfix/pipe[92687]: 5293F1E3025: to=<case@case.net.ru>, relay=so-filter, delay=0.19, delays=0.16/0.01/0/0.02, dsn=5.3.0, status=bounced (Command died with signal 11: "/usr/local/sbin/sp-postfix")

В Bind, добавляем для своего домена spf запись:

1
case.net.ru. IN TXT "v=spf1 +a +mx -all"

Теперь, если на сервере получателя письма настроен SPF, то письма будут приходить со следующим заголовком:

1
Received-SPF: pass (test.myiptest.com: domain of case.net.ru designates 213.79.110.123 as permitted sender)

Ссылки:

http://www.openspf.org/

http://www.myiptest.com/staticpages/index.php/DomainKeys-DKIM-SPF-Validator-test

Tags: , , ,

Установка и настройка ClamSMTP для Postfix

April 15th, 2009 No comments

Установка:

1
2
3
4
5
6
7
$ cd /usr/ports/security/clamsmtp
$ make showconfig
===> The following configuration options are available for clamsmtp-1.10_1:
     LOCAL_CLAMAV=on "RUN_DEPEND on security/clamav"
     LOCAL_CLAMAV_DEVEL=off "RUN_DEPEND on security/clamav-devel"
===> Use 'make config' to modify these settings
$ make install clean

Прописываем в rc.conf:

1
clamsmtpd_enable="YES"

Копируем конфиг:

1
2
$ cd /usr/local/etc/
$ cp clamsmtpd.conf-sample clamsmtpd.conf

Настраиваем:

1
2
3
4
OutAddress: 127.0.0.1:1026
Listen: 127.0.0.1:1025
ClamAddress: /var/run/clamav/clamd.sock
User: clamav

Запускаем:

1
$ /usr/local/etc/rc.d/clamsmtpd start

Настраиваем master.cf в Postfix’e (в моем случае подключена еще и спамоборона):

1
2
3
4
5
6
7
smtp      inet  n       -       n       -       -       smtpd
    -o content_filter=so-filter
127.0.0.1:1026  inet  n       -       n       -       -       smtpd
    -o content-filter=
so-filter     unix  -       n       n       -       -       pipe
    flags=q. user=souser argv=/usr/local/sbin/sp-postfix
    -a ${client_address} -f ${sender} -- ${recipient}

Путь письма при этом выглядит так:

1
mail -> smtpd (25) -> sofilter -> clamav (1025) -> smtpd (1026) -> mail

Перезапускаем Postfix:

1
$ postfix reload

Установка и работа с ClamAV

April 15th, 2009 No comments

Установка:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
$ cd /usr/ports/security/clamav
$ make showconfig
make install ===> The following configuration options are available for clamav-0.95.1:
     ARC=on "Enable arch archives support"
     ARJ=on "Enable arj archives support"
     LHA=on "Enable lha archives support"
     UNZOO=on "Enable zoo archives support"
     UNRAR=on "Enable rar archives support"
     MILTER=off "Compile the milter interface"
     LDAP=off "libmilter was built with LDAP"
     ICONV=off "Enable ICONV support"
     STDERR=off "Print logs to stderr instead of stdout"
     EXPERIMENTAL=off "Build experimental code"
===> Use 'make config' to modify these settings
$ make install clean

Обновление антивирусных баз выполняется командой

$ freshclam

Или демоном, контролируемым сценарием:

/usr/local/etc/rc.d/clamav-freshclam

Проверка файлов производится самостоятельной командой

$ clamscan

или командой

$ clamdscan

работающей совсместно с демоном clamd, который контролируется сценарием

/usr/local/etc/rc.d/clamav-clamd
Tags:

Устанавливаем систему мониторинга Zabbix

April 13th, 2009 No comments

Имеется:

1
2
$ uname -rps
FreeBSD 6.4-STABLE amd64

Устанавливаем:

1
2
3
4
5
6
7
8
9
10
11
12
$ cd /usr/ports/net-mgmt/zabbix
$ make showconfig
===> The following configuration options are available for zabbix-1.6.2_1,1:
     MYSQL=on "Use MySQL backend"
     PGSQL=off "Use PostgreSQL backend"
     SQLITE=off "Use SQLite backend"
     LDAP=off "Support for checking LDAP servers"
     IPV6=off "Support for IPv6"
     FPING=off "Use fping for pinging hosts"
     JABBER=on "Use jabber media type"
===> Use 'make config' to modify these settings
$ make install clean

В mysql создаем базу и добавляем пользователя:

1
2
mysql> CREATE DATABASE zabbix;
mysql> GRANT ALL ON zabbix.* TO zabbix@localhost IDENTIFIED BY 'zabbix';

Наполняем базу:

1
2
$ cd /usr/local/share/zabbix/create/
$ cat schema/mysql.sql data/data.sql data/images_mysql.sql | mysql -u zabbix -p zabbix

 

Zabbix Server

 

Копируем файл конфигурации:

1
2
$ cd /usr/local/etc/zabbix
$ cp zabbix_server.conf.sample zabbix_server.conf

Настраиваем:

1
2
3
4
5
ListenIP=127.0.0.1
DBHost=localhost
DBName=zabbix
DBUser=zabbix
DBPassword=zabbix

Добавляем в rc.conf

1
zabbix_server_enable="YES"

Запускаем:

1
$ /usr/local/etc/rc.d/zabbix_server start

 

Zabbix Agent

 

Устанавливаем:

1
2
$ cd /usr/ports/net-mgmt/zabbix-agent/
$ make install clean

Копируем файл конфигурации:

1
2
$ cd /usr/local/etc/zabbix
$ cp zabbix_agentd.conf.sample zabbix_agentd.conf

Настраиваем:

1
2
3
4
5
6
7
8
9
Server=127.0.0.1
Hostname=ZABBIX Server
ListenPort=10050
ListenIP=127.0.0.1
StartAgents=5
DebugLevel=3
PidFile=/var/tmp/zabbix_agentd.pid
LogFile=/tmp/zabbix_agentd.log
Timeout=3

Добавляем в rc.conf

1
zabbix_agentd_enable="YES"

Запускаем:

1
$ /usr/local/etc/rc.d/zabbix_agentd start

 

Веб-интерфейс

 

Делаем симлинк на веб-интерфейс:

1
2
$ cd /usr/local/www/data
$ ln -s /usr/local/share/zabbix/php zabbix

Заходим по адресу http://localhost/zabbix/ и продолжаем установку.

Во время установки через веб возникли следующие моменты:
- Необходимо установить значение переменной date.timezone в php.ini:

1
date.timezone = "Europe/Moscow"

- отчмодить каталог, куда инсталятор сохранит конфиг:

1
chown www:www /usr/local/share/zabbix/php/conf/

- при появлении ошибки “ERROR: Invalid URL” закомментировать строку 436 в файле php/include/validate.inc.php:

1
2
3
			else if($flags&P_ACT){
				if(!isset($_REQUEST['sid'])){
					//return ZBX_VALID_ERROR;

- сразу после установки и нажатия Finish, установка началась с начала – необходимо удалить куки браузера.
- для выхода используйте имя пользователя Admin, пароль zabbix.

 

Первоначальная настройка

 

- сменить шаблон для localhost’а на Template_FreeBSD (или просто отцепить шаблон)
- активировать мониторинг localhost’а
- создать нужные “Элементы данных” (items)
- создать на них триггеры
- настройки отправку сообщений по триггерам

Tags:

Создаем хостинг на базе FreeBSD

April 13th, 2009 No comments

Установка FreeBSD, переменные ядра, права доступа, структура каталогов и dns-имен. Такую схему хостинга использует Masterhost.

Журнал «Системный администратор» №53 (апрель, 2007 год).
Создаём собственный хостинг, или Сам себе ISP (стр. 50—55)
Автор: Андрей Шетухин.

Журнал «Системный администратор» №61 (декабрь, 2007 год).
Создаем собственный хостинг, или Сам себе ISP. Часть 2 (стр. 52—54)
Автор: Андрей Шетухин.

Tags:

Восстановление данных с помощью ddrescue

April 12th, 2009 No comments

GNU ddrescue is a data recovery tool. It copies data from one file or
block device (hard disc, cdrom, etc) to another, trying hard to rescue
data in case of read errors. Ddrescue does not truncate the output file
if not asked to. So, every time you run it on the same output file, it
tries to fill in the gaps. The basic operation of ddrescue is fully
automatic. That is, you don’t have to wait for an error, stop the
program, read the log, run it in reverse mode, etc. If you use the
logfile feature of ddrescue, the data is rescued very efficiently (only
the needed blocks are read). Also you can interrupt the rescue at any
time and resume it later at the same point.

Automatic merging of backups: If you have two or more damaged copies of
a file, cdrom, etc, and run ddrescue on all of them, one at a time,
with the same output file, you will probably obtain a complete and
error-free file. This is so because the probability of having damaged
areas at the same places on different input files is very low. Using
the logfile, only the needed blocks are read from the second and
successive copies.

WWW: http://www.gnu.org/software/ddrescue/ddrescue.html
Author: Antonio Diaz Diaz

«Input/output error (5)» сказала система при копировании файла и заставила погрузиться в неприятные раздумья о новом винчестере и подлом партизане SMART. К счастью все важные данные сохранились в резервных копиях, и всё-же постараться вытащить один файл очень хотелось — 34Гб образ виртуальной машины содержал в себе несколько документов потерять которые было бы неприятно.

Делать образ всего диска оказалось не лучшей идеей — место для этого отсутствовало, а ставить ещё один жёсткий очень не хотелось, вдобавок структура диска была цела и доступ к отдельным файлам оставался возможным. На помощь пришла утилита ddrescue, задача которой копировать файлы чтение которых затруднено — в первую очередь различных оптических дисков, но и жёстких дисков в нагрузку.

Первым делом потребовалось скачать утилиту — она идёт в стандартных пакетах Ubuntu(под именем gddrescue), но достаточно старой версии и некоторые полезные возможности не содержит.
По адресу ftp.gnu.org/gnu/ddrescue/ находится релиз 1.10, собирается простым набором «./configure && make && make install» и сразу готов к работе.

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

Первый проход запускается командой

ddrescue –no-split –verbose /media/disk-1/broken.vdi /media/disk-4/fixed.vdi /media/disk-4/rescue.log

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

Лог восстановления — параметр не обязательный, но при многопроходном варианте нужен, и если в первый проход его создать забыли, то можно использовать –generate-logfile, полученный лог будет больше оптимального, но для дальнейших проходов полностью подойдёт.

В моём случае первый проход занял больше дня и сообщил о следующем
rescued: 22093 MB, errsize: 12264 MB, errors: 3876
картина не самая приятная, но уже что-то, начинаем второй проход.

ddrescue –direct –max-retries=2 –verbose /media/disk-1/broken.vdi /media/disk-4/fixed.vdi /media/disk-4/rescue.log

теперь пробуем прочесть диск в режиме прямого доступа и с 2 повторными попытками. Это число можно увеличивать, но в моём случае это только увеличивало время и результатов не приносило. (А вот при копировании CD вполне может дать результат).

Второй проход занял ещё около 15 часов, причём значительно улучшил картину:
rescued: 34292 MB, errsize: 65220 kB, errors: 16659
но попробуем вернуть остатки

ddrescue –retrim –max-retries=2 –verbose /media/disk-1/broken.vdi /media/disk-4/fixed.vdi /media/disk-4/rescue.log

в этом режиме очень сильно падает скорость, но восстанавливается то, что предыдущие два прохода не смогли.

Через два часа восстановление прерываю, результат
rescued: 34293 MB, errsize: 64579 kB
понятно что резкого улучшения ждать не стоит. С другой стороны для файлов небольшого размера (10-100мб) именно третий проход давал максимум данных, так что зависит от везения и характера проблем.

Образ был успешно добавлен в VirtualBox, проверен стандартным chkdsk и все необходимые данные скопированы, погибшие 60 мегабайт пришлись на системные файлы. Времени на всё ушло чуть более двух суток, что конечно много, но приемлемо.

Удачного восстановления, и не забывайте делать бекапы, они стоят потерянного времени, но а на крайний случай, ddrescue Вам в помощь

Оригинал статьи: http://habrahabr.ru/blogs/linux/56796/

Tags:

Видеонаблюдение (часть 2)

April 9th, 2009 No comments

sk-2000fИмеется:
SK-2000F (EK-500F) PCI плата видео захвата 4 канала 1-25 кадр/сек
Вход для камеры: 4 канала
Аудиовход: 1 канал
Разрешение: 768*576 (PAL), 640*480 (NTSC)
Контроль сигнализация: возможность подключения 16-каналов сигнализации

Операционная система:

1
2
$ uname -rps
FreeBSD 6.4-STABLE amd64

Прописываем в /boot/loader.conf:

1
bktr_load="YES"

Либо сразу в конфиг ядра:

1
2
3
4
device  bktr
device  iicbus
device  iicbb
device  smbus

Устанавливаем плату. Перезагружаем компьютер. После загрузки видим:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
$ cat /var/run/dmesg.boot |grep bktr
bktr0:  mem 0x90001000-0x90001fff irq 21 at device 0.0 on pci4
bktr0: [GIANT-LOCKED]
bktr0: Warning - card vendor 0x0000 (model 0x0000) unknown.
bktr0: Detected a DPL34-1@-@0 at 0x84
bktr0: Intel Smart Video III/VideoLogic Captivator PCI,  tuner, dpl3518a dolby.
$ pciconf -lv
bktr0@pci4:0:0: class=0x040000 card=0x00000000 chip=0x036e109e rev=0x11 hdr=0x00
    vendor     = 'Conexant (Was: Brooktree Corp)'
    device     = 'Bt878/Fusion 878A Mediastream Controller'
    class      = multimedia
    subclass   = video
none1@pci4:0:1: class=0x048000 card=0x00000000 chip=0x0878109e rev=0x11 hdr=0x00
    vendor     = 'Conexant (Was: Brooktree Corp)'
    device     = '7610144D&amp;REV_02\4&amp;1F7DBC9F&amp;0&amp;09F0 TV Video Capture'
    class      = multimedia

 

ZoneMinder

 

Устанавливаем.

1
2
3
4
5
$ wget http://matrix.gatewaynet.com/panix/zoneminder.tar.gz
$ tar zxvf zoneminder.tar.gz
$ mv zoneminder /usr/ports/multimedia/
$ cd /usr/ports/multimedia/zoneminder
$ make install clean

Если во время сборки возникла ошибка:

1
2
3
zm_mpeg.cpp: In destructor 'VideoStream::~VideoStream()':
zm_mpeg.cpp:281: error: cannot convert 'ByteIOContext**' to 'ByteIOContext*' for argument '1' to 'int
url_fclose(ByteIOContext*)'

то удаляем патч и собираем заново:

1
2
3
$ cd /usr/ports/multimedia/zoneminder
$ rm files/patch-zm_mpeg.cpp
$ make reinstall clean

 

Если во время работы программы возникает ошибка:

1
zmwatch[2320]: ERR [Shared memory size conflict in shared_data, expected 312, got 320]

Удаляем патч и собираем заново:

1
2
3
$ cd /usr/ports/multimedia/zoneminder
$ rm files/patch-SharedMem.pm
$ make reinstall clean

 

Если во время работы программы возникает ошибка:

1
 WAR [Buffer overrun at index 54, slow down capture, speed up analysis or increase ring buffer size]

То в настройках камеры надо уменьшить Maximum FPS и Alarm Maximum FPS или увеличить буферы.

 

Для корректной работы ZoneMinder прописываем в /etc/sysctl.conf:

1
2
3
kern.ipc.shm_use_phys=1
kern.ipc.shmmax=536870912
kern.ipc.shmall=524288

 

Пояснение по режимам: None (и так понятно), Monitor (только просмотр), Modetect (запись только движения что я использую), Record (постоянная запись), Mocord (тоже что и Record, но дополнительно выделяются те области где было замечено движение). (c) densan

 

FFMPEG

 

Для захвата видео с помощью ffmpeg поэксперементируйте со следующими командами:

1
2
3
$ BKTR_DEV=1 ffmpeg -y -tvstd pal -r 12 -s 768x576 -deinterlace -isync -f bktr -i /dev/bktr0 -s 768x576 -vcodec rawvideo raw.avi
$ ffmpeg -y -tvstd pal -r 12 -s 640x480 -deinterlace -isync -f bktr -i /dev/bktr0 -s 640x480 -vcodec rawvideo raw.av
$ ffmpeg -y -tvstd pal -r 12 -s 640x480 -deinterlace -isync -f bktr -i /dev/bktr0 -s 640x480 -vcodec mpeg4 -vb 800k raw.avi

 

Motion

 

Устанавливаем:

1
2
3
4
5
6
7
8
$ cd /usr/ports/multimedia/motion/
$ make showconfig
===&gt; The following configuration options are available for motion-3.2.11_1:
     PWCBSD=off "PWCBSD based Webcams (disables BKTR)"
     BKTR=on "Support for TV Capture cards"
     LINUXTHREADS=off "Use LinuxThreads"
===&gt; Use 'make config' to modify these settings
$ make install clean

Прописываем в /etc/rc.conf:

1
motion_enable="YES"

Взяв за основу /usr/local/etc/motion.conf.sample создаем свой конфиг /usr/local/etc/motion.conf (приведены только изменения):

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
daemon on
process_id_file /var/run/motion.pid
setup_mode off
videodevice /dev/bktr0
input 1
norm 0
framerate 5
minimum_frame_time 0
output_all off
output_normal on
output_motion off
quality 75
ffmpeg_cap_new off
ffmpeg_cap_motion off
target_dir /mnt/share/case/motion/
jpeg_filename %s-%q
webcam_port 0
control_port 0
sql_log_image off
sql_log_snapshot off
sql_log_mpeg off
sql_log_timelapse off

 

Дублирование

 

Для дублирования изображения на другой сервер были написаны пару скриптов. На первом сервере list.php, лежащий в каталоге куда плодит картинки motion:

1
<?php system('ls -r -U *.jpg | head -n 100'); ?>

На втором сервере, скрипт на shell забирающий недостающий файлы с первого сервера:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
#!/bin/sh
 
file="http://example.com/list.php"
url="http://example.com/"
 
cd `dirname $0`
 
while test true
do
 
    if test -f list.php
    then
        rm list.php
    fi
 
    if test -f files
    then
        rm files
    fi
 
    wget -o /dev/null $file
 
    cat list.php | while read line
    do
        if ! test -e $line
        then
            echo $url$line &gt;&gt; files
        fi
    done
 
    if test -s files
    then
        wget -o /dev/null -c -i files
    fi
 
    if [ -e stop ]
    then
        rm stop
 
        if test -f list.php
        then
            rm list.php
        fi
 
        if test -f files
        then
            rm files
        fi
 
        exit 1
    fi
 
    sleep 1
 
done

 

Ссылки: