Новое предложение на рынке видеонаблюдения. Комплект с установкой.

Компания МНЕВИДНО.ру закончила многомесячное тестирование совместимости и надежности нового продукта. Теперь клиенту компании могут приобрести комплект видеонаблюдения с жестким диском и установкой. Это позволяет существенно снизить стоимость конечного продукта и при этом нести ответственность за весь цикл работ по установке видеонаблюдения.
Наиболее популярные комплекты видеонаблюдения с жестким диском и установкой:

HD комплект "Все и сразу, дом и офис"


Инженеры компании установят и настроят оборудование уже на следующий день.
Захват и распознавание лиц и предметов в Linux с использованием нейронных сетей и библиотеки компьютерного зрения.
OpenCV + LibFANN.

Что было.
Linux face-control 2.6.32-5-amd64 #1 SMP Sun Sep 23 10:07:46 UTC 2012 x86_64 GNU/Linux
Операционная система Debian 6.0.6
WEB камера Logitech HD WEBCAM C525

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

Что было использовано.

Бесплатный биллинг. Opensource free billing.

5 open source billing systems to watch

Collecting money from customers should be the easy part of your business, but an billing system that underperforms can make life unnecessarily difficult for CIOs.
In this edition of 5 Open Source Products to Watch, we take a look at billing systems. That’s right, there are open source applications available for invoicing and billing customers. They’re open source, Web-based and can be extended and integrated to suit specific needs.
Best of all, they don’t cost a red cent.
1. AgileBill
AgileBill was released as a commercial product in 2004 and then open sourced by its creator Tony Landis in 2008. AgileBill is a billing and invoicing application suitable for the membership/subscription type of business model, including Web hosting companies, ISPs and VoIP providers.
AgileBill features plug-ins for payment processing, provisioning, and interfacing with third-party applications and services. It has also given rise to the AgileVoice and AgileISP VoIP and ISP billing applications, respectively.
URL: http://www.agileco.com/agilebill-open-source-billing-software.htm
Licence: Open AgileBill Licence
2. Amberdms Billing System
The Amberdms Billing System (ABS) is a billing system that also provides a number of useful accounting and business management functions. ABS has apps for invoicing, service management, HR and time-keeping, and is designed for small and medium businesses as well as small ISPs and IT companies.
Third-party integration can be done via the API and commercial support is available from New Zealand company Amberdms.
ABS claims to have an “easy UI” and integration between timekeeping and invoicing features means customers can be automatically billed for hours worked.
URL: http://www.amberdms.com
Licence: AGPL
3. Freeside
Freeside is a billing, trouble ticketing and provisioning automation software tailored to online businesses, including ISPs, ITSPs, hosting and content providers.
The billing functionality includes real-time credit card and e-cheque processing using the popular payment gateways; e-mail, fax, printed and online invoicing; and flexible pricing and rating plans, like anniversary billing and usage based billing. Freeside also integrates Request Tracker, another open source project for support ticketing.
Other features include a customer self-care portal (with an API for extensibility) and reseller functionality which allows “virtualized” reseller access.
URL: http://www.freeside.biz/freeside/
Licence: AGPL
4. CitrusDB
CitrusDB is a billing system developed with PHP and MySQL that can also be used to keep track of customer information (CRM), services, products, invoices and credit cards, and support information. The goal of the project is to provide an open source customer care and billing solution that can be used in many different service industries like ISPs, consulting, and telecommunications.
Standard billing features include any billing cycle -- one-time, monthly, bi-monthly, quarterly, 6-months or yearly -- and billing is able to provide batch credit card exports, printed invoices, or emailed invoices.
CitrusDB also has an online account manager which allows customers to view their account services and recent balance and payments. It also allows them to submit support notes to their account via the online form.
URL: http://www.citrusdb.org/
Licence: GPL
5. JBilling
JBilling is a Web-based billing system developed in Java. It is cross-platform and supports multiple database systems. The project claims it can scale to “invoice millions” and can be run on a single server or a cluster of specialised nodes.
Its features include automated invoice generation and payment processing; the ability to send invoices as e-mails, PDF attachments or paper; the ability to accept partial and advance payments; bundles, packages, plans and promotions; and a business rules management system.
Professional support is also available for JBilling, which also has multiple language, currency and localisation support.
URL: http://www.jbilling.com/
Licence: AGPL


Честно скопипастено для личных целей и чтобы не забыть отсюда : http://www.cio.com.au/article/324595/5_open_source_billing_systems_watch/

Riemann+Ubuntu 12.10 x64


Установка Riemann мониторинг будет производиться на чистый свежеустановленный Ubuntu Server 12.10 с 64-битной архитектурой. Выбор операционной системы и архитектуры был обоснован лишь наличием таковой на моем сервере виртуальных машин :).
Для установки нам потребуется предварительно скачать и установить Java и Ruby. Это несложно, для начала обновим данные репозиториев и саму систему:

sudo apt-get update
sudo apt-get upgrade

Теперь установим Oracle Java 7 JRE:

sudo sh -c "echo 'deb http://www.duinsoft.nl/pkg debs all' >> /etc/apt/sources.list"
sudo apt-get update
sudo apt-key adv --keyserver keys.gnupg.net --recv-keys 5CB26B26
sudo apt-get update
sudo apt-get install update-sun-jre

Далее устанавливаем Ruby и все необходимое для его успешной установки:

sudo apt-get install git
sudo curl -L get.rvm.io | bash -s stable
source ~/.rvm/scripts/rvm
sudo apt-get -y install build-essential openssl libreadline6 libreadline6-dev zlib1g zlib1g-dev libssl-dev libyaml-dev libsqlite3-0 libsqlite3-dev sqlite3 libxml2-dev libxslt-dev autoconf libc6-dev ncurses-dev automake libtool bison subversion
rvm install 1.9.3
rvm use 1.9.3 --default

Скачиваем и распаковываем сам Riemann:

tar xvfj riemann-0.2.1.tar.bz2
cd riemann-0.2.1/

Проверяем архив:
md5sum -c riemann-0.2.1.tar.bz2.md5

Запускаем сервер:
bin/riemann etc/riemann.config
Riemann сервер запущен и готов к приему сообщений от клиентов. Теперь установим Ruby клиент, набор утилит и морду для просмотра:

gem install riemann-client riemann-tools riemann-dash


Создаем файл конфигурации web-интерфейса в домашней директории.

nano config.rb

Пишем в него 2 строки:

set  :port, 4567set  :bind, '0.0.0.0'


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

riemann-dash

Теперь и сервер и web-интерфейс запущены.

Заходим по адресу http://ip_сервера:4567 и попадаем в web-интерфейс riemann-dash.


Система запущена и готова к работе. Инструкции по настройке и работе с системой доступны на сайте разработчиков (только на английском). http://riemann.io/index.html

При создании инструкции использованы материалы с сайта разработчиков http://riemann.io/index.html 

Перенос почты на Gmail со своим доменом

Многие обладатели собственных доменов пользуются почтовым сервисом, который предоставляет хостинг, но это бывает не всегда удобно. В большинстве случаев нет нормального веб-интерфейса и почта порой глючит. В этой заметке я расскажу, как прикрутить сервис gmail.com к своему домену. Для чего это нужно?

Вот основные преимущества такой почты:
  • Высокая надёжность и скорость
  • Адрес вида yourname@yourdomain.ru
  • Фильтр спама от Google
  • Удобный веб-интерфейс
  • Возможность предоставлять почтовые ящики на своем домене другим пользователям
  • Поддержка POP, SMTP, IMAP
  • 7 Гб дискового пространства
  • Независимость почты от хостинга
Настройка:
Нам понадобится немного времени и доступ к FTP и редактированию DNS-записей домена.
1. Создаем аккаунт на Google Apps.
2. Подтверждаем собственность домена. Есть 2 способа, самый простой — это залить небольшой файлик в корень сайта. Вся эта процедура подробно описана в админке аккаунта Google Apps.
3. Создаём аккаунт пользователя(Админа).
4. Меняем MX-записи домена. Подробнее тут или в разделе «Электронная почта -> Активация электронной почты».
5. Активируем почту. Ждём. Готово!
Настройка MX-записей на ISPManager.
Меня больше всего затруднил пункт 4. Поэтому распишу:
MX-записи можно менять на сайте компании домена или на сайте компании своего хостинга(это если у вас домен и хостинг сайта зарегистрированы не одной компанией).
Но на сайте компании домена, для того что управлять данными(управлять зоной) нужно было использовать их NS сервер, но т.к. у меня прописаны NS серверы хостинга, то пришлось менять MX-записи на сайте хостинга. Это делается в панеле управления хостинга.
Панель управления моего хостинга ISPManager. На сайте Google нет инструкции к нему, так что напишу.
Заходим в Админ-Панель ISPsystem, Главное -> Доменное имя, нажимаем на нужный нужный домен. Удаляем все записи с типом «MX (почтовый сервер)». Создаём новые записи, приведённые ниже.
Имя
Тип
Адрес
Приоритет
domen.ru. MX (почтовый сервер) ASPMX.L.GOOGLE.COM.
1
domen.ru. MX (почтовый сервер) ALT1.ASPMX.L.GOOGLE.COM.
5
domen.ru. MX (почтовый сервер) ALT2.ASPMX.L.GOOGLE.COM.
5
domen.ru. MX (почтовый сервер) ASPMX2.GOOGLEMAIL.COM.
10
domen.ru. MX (почтовый сервер) ASPMX3.GOOGLEMAIL.COM.
10
domen.ru. MX (почтовый сервер) ASPMX4.GOOGLEMAIL.COM.
10
domen.ru. MX (почтовый сервер) ASPMX5.GOOGLEMAIL.COM.
10
Где domen.ru, ваш домен. Так же обратите внимание на точки после имени и адреса, они нужны!
А далее на сайте Google в разделе «Электронная почта -> Активация электронной почты» нажимаем на кнопку «Я выполнил(а) эти действи» и ждём(около 2-х часов).
——————————
ps: я потом решил «поднять зону» у регистратора.
Мой регистратор один из партнёров Reg.ru.
Авторизуемся, выбираем — «использовать сервера регистратора». Ну и сразу там прописываются DNS сервера: ns1.reg.ru, ns2.reg.ru. Нажимаем — «управление зоной». И вписываем:
Имя поддомена
Тип записи
Данные (IP, CNAME, HOSTNAME)
Приоритет(MX)
@ MX ASPMX.L.GOOGLE.COM.
1
@ MX ALT1.ASPMX.L.GOOGLE.COM.
5
@ MX ALT2.ASPMX.L.GOOGLE.COM.
5
@ MX ASPMX2.GOOGLEMAIL.COM.
10
@ MX ASPMX3.GOOGLEMAIL.COM.
10
@ MX ASPMX4.GOOGLEMAIL.COM.
10
@ MX ASPMX5.GOOGLEMAIL.COM.
10
А для того что бы привязать этот домен к хостингу нужно добавить две записи:
Имя поддомена
Тип записи
Данные (IP, CNAME, HOSTNAME)
@ A IP
www A IP
Где IP — это IP адрес сервера хостинга.
Почта по адресу mail.domen.ru
Далее я захотел сделать вход на почту по адресу mail.domen.ru. Для этого активируем эту возможность на сайте Google в разделе «Электронная почта -> Изменить URL». Потом заходим опять в Админ-Панель ISPsystem, Главное -> Доменное имя, нажимаем на нужный домен. Удаляем запись с именем mail. Создаём новую запись.
Имя
Тип
Адрес
mail CNAME (каноническое имя) ghs.google.com.
Настройка почтового клиента.
Почтовый клиент настраивается так же, как и для почты GMail.com(подробнее тут, настройка TheBat!), с отличием лиж в том, что при запросе вашего имени пользователя необходимо вводить полный адрес электронной почты(polsovatel@domen.ru).
Что бы почтовый клиент мог забирать почту, нужно убедиться, что в настройках почтового ящика разрешён доступ по POP.
Автор: Grok.Ru, дополнительно DNDialog.com, ExDll.ru.
Постовой: Перевозка брёвен и другого тяжёлого груза.

Интересные записи

SSH тоннель через Putty

Нам потребуется:
- машина с "внешним" постоянным адресом, имеющая доступ к глобальной сети с запущеным SSH сервером.
- Putty (SSH клиент, в том числе для Windows)
- 5 минут

1. запускаем Putty
2. В поле "Host Name (or IP address)" вводим адрес машины с запущеным SSH сервером и выбираем порт подключения на удаленной машине (обычно это 22, но часто в целях безопасности могут использоваться и другие).
3. В разделе (левая колонка) SSH >> Tunnels в поле Source port пишем порт на котором у нас будет работать локальный прокси, к которому будут обращаться наши браузеры, аськи, скайпы и прочия. Отмечаем чекбоксы Dynamic и Auto. Нажимаем кнопку Add.
4. Нажимаем Open.
5. В появившемся экране вводим имеющиесся логи и пароль.
6. В программах, которые будут работать через локальный прокси указываем адрес прокси 127.0.0.1 порт, который указывали в Putty, тип прокси SOCKS5.

NANO на FreeBSD

установка nano на freebsd
cd /usr/ports/editors/nano
make install

перевод UNIX timestamp

ОН-ЛАЙН калькулятор UNIX веремени
http://www.bl2.ru/programing/timestamp.html

архиваторы UNIX

Как создать архив .tar.gz

tar -cvf file.tar /full/path - создать .tar

tar -czvf file.tar.gz /full/path - создать .tar.gz (архив)

tar -cjvf file.tar.bz2 /full/path - создать .tar.bz2 (архив)

Синтаксис этих примеров:
tar [-ключи] [название архива] [путь, что запаковать]

Как открыть (распаковать) .tar

Чтобы распаковать запаковывай .tar: tar -xvf file.tar.gz

Синтаксис: tar [-ключи] [название архива]

Ключи архиватора

с - (Create) создать архив.
z – создает архив .tar.gz
j - создает архив .tar.bz2
x - (eXtract) позволяет вам извлекать файлы из архива.
v - делает вывод tar подробным. Это означает, что на экран будут выведены все найденные в архиве файлы. Если эта опция опущена, информация, выводимая в процессе обработки, будет ограничена.
f - является обязательной опцией. Без неё tar пытается использовать магнитную ленту вместо файла архива.
z - позволяет вам обрабатывать архив, сжатый gzip'ом (с расширением .gz). Если вы забудете указать эту опцию, tar выдаст ошибку. И наоборот, эта опция не должна использоваться для несжатых архивов.
t - (Test) просмотреть содержимое архива.

Более подробно о ключах и возможностях вы можете узнать, набрав команду в среде Unix
[~]# man tar

В файлах .tar можно хранить несколько папок (структуру папок и файлов).
Лучше использовать с ключами для архивации файла .tar, чтобы в результате получились файлы с расширением .tar.gz (файл .tar сжатый архиватором gzip) или .tar.bz2 (файл .tar сжатый bzip2).
bzip2 лучше сжимает, но с gzip более распространён, поэтому лучше сжимать этим архиватором.
Если у вас установлен WinRAR, то проблем с открытием .tar.bz2 и .tar.gz не будет.

История архиватора

tar (англ. tape archive) — формат битового потока или файла архива, а также название традиционной для Unix программы для работы с такими архивами. Программа tar была стандартизирована в POSIX.1-1998, а также позднее в POSIX.1-2001. Первоначально программа tar использовалась для создания архивов на магнитной ленте, а в настоящее время tar используется для хранения нескольких файлов внутри одного файла, для распространения программного обеспечения, а также по прямому назначению — для создания архива файловой системы. Одним из преимуществ формата tar при создании архивов является то, что в архив записывается информация о структуре каталогов, о владельце и группе отдельных файлов, а также временные метки файлов.
Как и другие утилиты Unix, tar — специализированная программа, которая следует философии Unix: «делать только одну вещь» (работать с архивами), «но делать её хорошо». Поэтому tar не создаёт сжатых архивов, а использует для сжатия внешние утилиты, такие как gzip и bzip2. Ранее для сжатия использовалась также утилита compress, которая практически вышла из употребления.

Примечание

Из-за достаточно поздней стандартизации существует несколько похожих, но не до конца совместимых форматов. В частности различие между GNU tar и SUN Solaris tar наблюдается при длине имени файла, включаемого в архив, более 100 символов или размере включаемого в архив файла более 8 ГБ.

Расширения имён файлов

Для файлов, содержащих архивы tar, традиционно применяются следующие расширения имён файлов:

архив tar:
.tar

архив tar, сжатый программой gzip:
.tar.gz
.tgz (в случае ограничений файловой системы на длину расширения)
.tar.gzip

архив tar, сжатый программой bzip2
.tar.bz2
.tar.bzip2
.tbz2
.tb2
.tbz

архив tar, сжатый программой compress
.tar.Z
.taz

архив tar, сжатый программой LZMA
.tar.lzma

архив tar, сжатый программой XZ
.tar.xz

архив tar, сжатый программой lzop
.tar.lzo
.tzo

Честно скопипастено для личных целей из http://webhelpcenter.ru/linux_commands/17-kak-sozdat-arxiv-targz-v-linux.html

очистка кеша маршрутизации

ip route flush cache

поиск больших файлов UNIX

Найти файлы размером больше 10Мб
find / -size +10M | awk '{system("ls -al "$1)}'

использование SCP в UNIX

Команда scp используется для передачи файлов между компьютерами через безопасное, шифрованное соединение. Она похожа на rcp.
Общий синтаксис передачи локального файла на удалённый компьютер выглядит так:
scp  username@tohostname:
Здесь указывает исходный файл, включая путь к нему, например, /var/log/maillog. Параметр определяет назначение; это может быть новое имя файла, например /tmp/hostname-maillog. Если вы не укажите в начале пути удалённого каталога /, будет выбран путь относительно домашнего каталога пользователя username, обычно это /home/username/.
Чтобы переслать локальный файл shadowman в домашний каталог вашей учётной записи на компьютере penguin.example.net, введите в приглашении оболочки следующее (подставьте вместо username ваше имя пользователя):
scp shadowman username@penguin.example.net:shadowman
При этом локальный файл shadowman скопируется в /home/username/shadowman на компьютере penguin.example.net. Вы также можете опустить имя файла shadowman в конце команды scp.
Общий синтаксис передачи удалённого файла на локальный компьютер выглядит так:
scp username@tohostname: 
Где обозначает исходный файл, включая путь, а — назначение, включая путь.
В качестве исходных файлов можно указать несколько файлов. Например, чтобы переслать содержимое каталога downloads/ в существующий каталог uploads/ удалённого компьютера penguin.example.net, введите в приглашении оболочки следующую команду:
scp downloads/* username@penguin.example.net:uploads/
 

использование TCPDUMP

Tcpdump чрезвычайно удобный сетевой анализатор, очень помогающий в работе как сетевым администраторам, так и безопасникам. Естественно что для получения максимальной информации при работе с tcpdump, просто необходимо иметь представления о стеке протоколов TCP/IP. Для удобства можно использовать более удобные и интеллектуальные программы, например Wareshark, но часто возникают ситуации когда на тестируемую машину не представляется возможным установить дополнительные сервисы, и тогда tcpdump просто незаменим, не будит же админ, ради анализа пакетов, ставить на unix’овый сервак X-Windows ;) тем более что в большинстве unix’овых систем, утилита tcpdump идет по умолчанию.
Понимание протокола TCP/IP дает широкое пространство для использование анализатора и устранения неисправностей и неполадок в работе сети, за счет разбора пакетов. Поскольку оптимальное использование данной утилиты требует хорошего понимания сетевых протоколов и их работы, то получается забавная ситуация, в которой инженеру в любом случае необходимо знать и понимать механизмы передачи данных в сети. т.ч. tcpdump полезна во все отношениях: как устранения неисправностей, так и самообразования.

Ниже приводятся несколько опций, которые помогут наиболее полно и подробно использовать эту утилиту, тем более что все эти опочки и ключики довольно легко забываются, и данные примеры весьма полезны, для освежевания памяти.
Первый используемый ключик -n который запрещает попытки преобразования адресов в доменные имена, тем самым выдавая нам чистые IP адреса с портами.
Второй это -X который задает для каждого пакета вывод как hex (шестнадцатеричная система) так и ASCII содержимого пакета.
И последняя опция это -S которая заменяет вывод относительной TCP нумерации, на абсолютную. Смысл в том, что при относительной нумерации некоторые проблемы могут скрыться от вашего внимания.
Нужно понимать, что основное преимущество tcpdump перед другими утилитами заключается в том, что в ней возможен подробный и ручной разбор пакетов. Также нужно помнить что по умолчанию tcpdump использует только первые 68 байт пакета, т.ч. если необходимо видеть больше, то следует использовать ключ -s number , где number количество байт которые следует захватить. В случае задания number 0 , произойдет полный захват пакета, поэтому лучше использовать значение 1514, что даст полный захват стандартного, для сетей Ethernet, пакета.
Список наиболее часто используемых ключей:
-c : задается проверка размера файла захвата перед каждой очередной записью захваченного пакета, если размер больше, то файл сохраняется и запись идет в новый файл
-e : выводится ethernet заголовок (канальный уровень) в каждой строке дампа
-i any : прослушивание всех интерфейсов, на случай если вам необходим весь трафик.
-n : запрещает преобразование адресов в доменные или символьные имена
-nn : запрещает преобразование адресов и портов в доменные или символьные имена
-q : Красткий вывод информации, за счет уменьшения вывода информации о протоколе.
-X : выводит как hex так и ASCII содержимое пакета
-v, -vv, -vvv : задает вывод дополнительной информации о захваченных пакетах, что дает возможность более широкого анализа.
Несколько примеров для использования:
# Стандартный вывод пакетов
tcpdump -nS
# Расширенный стандартный вывод
tcpdump -nnvvS
# Глубокий разбор пакета
tcpdump -nnvvXS
# Наиболее подробная информация о трафике
tcpdump -nnvvXSs 1514
Выражения позволяют производить более целевое сканирование и задавать типы трафика. Умение использовать выражения делает tcpdump весьма продуктивным инструментом, в рукам сисадмина. Существует три основных типа выражений: type, dir, and proto.
Опции выражжения type бывают host, net и port.
Для выражения направления задаваемого dir существующие опции src, dst, src or dst, и src and dst.
Несколько стандартных выражений:
host // анализ трафика на основе IP адреса ( также работает с символьными именами, если не задано -n)
tcpdump host 1.2.3.4
src, dst // анализ трафика только для определенного назначения или передатчика
tcpdump src 2.3.4.5
tcpdump dst 3.4.5.6
net // захват трафика принадлежащего определенной сети
tcpdump net 1.2.3.0/24
proto // работает с tcp, udp, и icmp. Нужно помнить что proto не упоминается
tcpdump icmp
port // анализ трафика с определенного порта (входящего или исходящего)
tcpdump port 3389
src, dst port // фильтр базируется на входящем или исходящем порту
tcpdump src port 1025
tcpdump dst port 3389
Но наиболее сильным инструментом являются операнды, позволяющие задавать условия для выражений и опций, для более подробного вычленения информации об анализируемом трафике.
AND
and or &&
OR
or or ||
EXCEPT
not or !
TCP трафик с ресурса 10.15.123.33 с портом назвачения 3379:
# tcpdump -nnvvS tcp and src 10.15.123.33 and dst port 3379
Трафик переходящий из сети 192.168 с назначением на сети 10 или 172.16:
# tcpdump -nvX src net 192.168.0.0/16 and dst net 10.0.0.0/8 or 172.16.0.0/16
Non-ICMP трафик с точкой назначения 192.168.0.2 и из сети 172.16:
# tcpdump -nvvXSs 1514 dst 192.168.0.2 and src net 172.16.0.0/16 and not icmp
Трафик с хостов Eros or Ares , но не идущий на стандартный SSH порт (для данного выражения требуется разрешение имен):
# tcpdump -vv src eros or ares and not dst port 22
Как видно из приведенных примеров, мы можем строить любые выражения, для любых целей. Также, используя сложный синтаксис, из анализа мы можем исключать любой тип трафика.
Также следует помнить о том, что мы можем строить запросы, включающие группы и пулы опций, заданных в одном запросе. Но для того чтобы утилита tcpdump обращала на них внимание их нужно помещать в скобки, беря выражение в одиночные кавычки:
Трафик идущий с хоста 10.0.2.4 на порты назначения 3379 или 22:
# tcpdump ’src 10.0.2.4 and (dst port 3379 or 22)’
Также возможно производить фильтрацию на основе TCP флагов, например для вычленения SYN или RST пакетов:
Анализировать все URG пакеты:
# tcpdump ‘tcp[13] & 32 != 0′
Анализировать все ACK пакеты:
# tcpdump ‘tcp[13] & 16 != 0′
Анализировать все PSH пакеты:
# tcpdump ‘tcp[13] & 8 != 0′
Анализировать все RST пакеты:
# tcpdump ‘tcp[13] & 4 != 0′
Анализировать все SYN пакеты:
# tcpdump ‘tcp[13] & 2 != 0′
Анализировать все FIN пакеты:
# tcpdump ‘tcp[13] & 1 != 0′
Анализировать все SYN-ACK пакеты:
# tcpdump ‘tcp[13] = 18′
Нужно помнить что фильтр обрабатывает данный запрос следующим образом, проверяет 13 байт заголовка TCP пакета и заданный байт флага, на соответствие условию, например:
tcpdump ‘tcp[13] & 2 != 0′ – просмотр и сравнение 13 и 2 байтов заголовка, на условие что данные не равны 0, т.е. заданы 1.
Анализ специализированного трафика:
Анализировать весь IPv6 трафик:
# tcpdump ip6
Анализировать весь трафик с имеющимися флагами SYN и RST:
# tcpdump ‘tcp[13] = 6′
Анализировать весь трафик с имеющимся “evil bit”:
# tcpdump ‘ip[6] & 128 != 0′

Честно скопипастено для личных нужд из http://odminblog.ru/usage-of-tcpdump/

Полезные команды UNIX

#Выводит (не рекурсивно) количество файлов и папок в текущей папке. Первая команда выводит по одному файлу
#в строку, а вторая считает количество этих строк. Здесь не учитываются скрытые файлы, начинающиеся с точки.
#Хотите их тоже учитывать - вместо ls -1 напишите ls -al, но не забудьте из результата вычесть 2, т.к. в выводе
#первые две строки займут текущий каталог и каталог-родитель (. и ..)
ls -1 | wc -l
 
#То же что и выше, только включая скрытые файлы и каталоги . и .., т.е. реальное количество всех файлов в папке
#будет на 2 меньше, чем выведет команда
ls -1a | wc -l
 
#Считаем, сколько места на диске занимает каталог. Выводим в человечном виде - не в байтах, а в Мб или Гб.
du -sh /var
 
#Кладем папку в архив .tar.gz, который создается в текущем каталоге
tar cvfz archive.tar.gz dir_name
 
#Распаковываем содержимое архив .tar.gz в текущий каталог
tar xvfz archive.tar.gz
 
#Просмотр файла с возможностью скроллинга вверх и вниз
less file.txt
 
#Просмотр последних записей в лог-файле
tail file.txt
 
#Просмотр скорости чтения диска
hdparm -t /dev/sda
 
#Создать патч
diff -uN file.orig file.new > file.patch
 
#Наложить патч
patch file.orig < file.patch
 
#Просмотр количества файлов в папке с обновлением в реальном времени
watch -n 1 "ls -1 | wc -l"
 
#Количество подкаталогов в указанном каталоге
find /var -type d | wc -l
 
#Автоматическая установка зависимостей при установке пакета из файла с помощью dpkg
dpkg -i имя_пакета
apt-get -f install
 
gpedit – массовое переименование файлов. Есть очень 
удобная функция массового перевода имен файлов в другой регистр. 
Программа входит в репозиторий debian. 

Новый хромобук от Google

http://www.google.com/intl/en/chrome/devices/landing.html

Видеотрансляции на сайте

Для транскодирования и записи в очередной раз будем использовать VLC. В качестве RTMP-сервера задействуем Erlyvideo, ядро которого распространяется под лицензией GPL. В одной из предыдущих записей я уже описывал возможное решение с использованием Red5. Запись оказалась довольно интересной, поэтому теперь предложу еще одно решение с учетов современных тенденций и инструментов.
Приведу общую схему, где в качестве примеры указаны IP-камеры c видеопотоками в MPEG-4 и H264:
Схема трансляции
Как видно на диаграмме, для транскодирования используется VLC, а H264-поток забирается Erlyvideo напрямую, благо это он умеет. Для организации HTTP Live Streaming также используется VLC, настройки которого мы увидим ниже.
По традиции, детали установки приведу для Debian Squeeze 6.0 amd64, поскольку для этой архитектуры существует репозиторий Erlyvideo. Сразу оговорюсь, трансляция в примерах ведется без звука.
1. Подготовка
Добавляем репозитории для Debian Multimedia, nginx и Erlyvideo:
/etc/apt/sources.list.d/debian-multimedia.list
deb http://www.deb-multimedia.org squeeze main non-free
deb-src http://www.debian-multimedia.org squeeze main non-free
/etc/apt/sources.list.d/erlyvideo.list
deb http://debian.erlyvideo.org binary/
/etc/apt/sources.list.d/nginx.list
deb http://nginx.org/packages/debian/ squeeze nginx
deb-src http://nginx.org/packages/debian/ squeeze nginx
Обновляем репозитории
apt-get update
Обращаю ваше внимание, что репозиторий Erlyvideo добавлен для будущего обновления Debian до Wheezy, т.к. последняя версия Erlyvideo из пакетов ставится только на эту версию дистрибутива.
2. Установка ffmpeg, libvpx, fdk-aac, x264, openssl
apt-get install make automake g++ gcc autoconf lua5.1 liblua5.1-0-dev libtag1-dev \
libdvbpsi-dev libcdio-dev libvcdinfo-dev libcddb2-dev libmad0-dev libfaad-dev liba52-0.7.4-dev \
libmpeg2-4-dev libzvbi-dev libflac-dev libdca-dev libdirac-dev libdvdnav-dev libdvdread-dev libfaac-dev \
libgcrypt11-dev libgnutls-dev libgpac-dev libiso9660-dev libjpeg62 libltdl-dev libmp3lame-dev \
libmodplug-dev libpng12-dev libraw1394-dev libschroedinger-dev libspeex-dev libtag1-dev \
libtasn1-3-dev libtheora-dev libtwolame-dev libvcdinfo-dev libvorbis-dev build-essential \
librtmp-dev checkinstall git libopencore-amrnb-dev libopencore-amrwb-dev pkg-config yasm zlib1g-dev

# x264
cd /usr/local/src
git clone --depth 1 git://git.videolan.org/x264
cd x264
./configure --enable-pic --enable-shared
make
sudo checkinstall --pkgname=x264 --pkgversion="3:$(./version.sh | \
awk -F'[" ]' '/POINT/{print $4"+git"$5}')" --backup=no --deldoc=yes \
--fstrans=no --default

# fdk-aac
cd /usr/local/src
git clone --depth 1 git://github.com/mstorsjo/fdk-aac.git
cd fdk-aac
autoreconf -fiv
./configure --with-pic --enable-shared
make
sudo checkinstall --pkgname=fdk-aac --pkgversion="$(date +%Y%m%d%H%M)-git" --backup=no \
--deldoc=yes --fstrans=no --default

# libvpx
cd /usr/local/src
git clone --depth 1 http://git.chromium.org/webm/libvpx.git
cd libvpx
./configure --enable-pic --enable-shared --disable-unit-tests
make
sudo checkinstall --pkgname=libvpx --pkgversion="1:$(date +%Y%m%d%H%M)-git" --backup=no \
--deldoc=yes --fstrans=no --default

# ffmpeg
cd /usr/local/src
git clone --depth 1 git://source.ffmpeg.org/ffmpeg
cd ffmpeg
./configure --enable-gpl --enable-libfaac --enable-libmp3lame --enable-libopencore-amrnb \
--enable-libopencore-amrwb --enable-librtmp --enable-libtheora --enable-libvorbis \
--enable-libvpx --enable-libx264 --enable-nonfree --enable-version3 --enable-pic --enable-shared
make
sudo checkinstall --pkgname=ffmpeg --pkgversion="5:$(date +%Y%m%d%H%M)-git" --backup=no \
--deldoc=yes --fstrans=no --default

# openssl
# !!!ДЛЯ КОРРЕКТНОЙ РАБОТЫ ERLYVIDEO на Debian Squeeze!!!
# !!! Для Debian Wheezy можно apt-get install libssl1.0.0 !!!
cd /usr/local/src
wget http://www.openssl.org/source/openssl-1.0.1c.tar.gz
tar -xvzf openssl-1.0.1c.tar.gz
cd openssl-1.0.1c
./config --prefix=/usr zlib-dynamic --openssldir=/etc/ssl shared
make
sudo checkinstall --pkgname=openssl --pkgversion="5:$(date +%Y%m%d%H%M)-git" --backup=no \
--deldoc=yes --fstrans=no --default

hash x264 ffmpeg ffplay ffprobe
ldconfig
3. Установка VLC
cd /usr/local/src
wget http://download.videolan.org/pub/videolan/vlc/2.0.3/vlc-2.0.3.tar.xz
tar -xvJf vlc-2.0.3.tar.xz
cd vlc-2.0.3/contrib
mkdir native
cd native
../bootstrap
make .live555
cd /usr/local/src/vlc-2.0.3
./configure --enable-faad --disable-pulse --disable-alsa --disable-qt4 --disable-skins2 --disable-v4l2 \
--disable-xvideo --disable-glx --disable-visual --enable-realrtsp --enable-flac --disable-dbus \
--disable-xcb > /tmp/1 2> /tmp/2
# В файле /tmp/2 можно будет смотреть ошибки и предупреждения процесса конфигурирования
# Если будет какая-нибудь ошибка, то необходимо установить соответствующий пакет Debian и
# запустить configure еще раз
make
adduser ipcam
cp -r /usr/local/src/vlc-2.0.3 /home/ipcam/vlc
chown -R /home/ipcam/vlc ipcam:ipcam
#!Запускать vlc от пользователя ipcam!
4. Установка nginx
apt-get install nginx
5. Установка Erlyvideo
#!!! Если установлен Debian Wheezy, то apt-get install erlyvideo должно сработать
cd /usr/local/src/
wget http://debian.erlyvideo.org/binary/erlyvideo_2.10.18_amd64.deb
dpkg -i --force-depends erlyvideo_2.10.18_amd64.deb
6. Конфигурация VLC
Создаем скрипт /home/ipcam/start_vlc.sh (не забудьте поменять CONTROLPASSWORD):
#!/bin/sh
/home/ipcam/vlc/vlc -vv --sout-keep -I telnet --telnet-host=127.0.0.1 -R \
--udp-caching=1000 --http-caching=1000 --telnet-password=CONTROLPASSWORD \
--vlm-conf /home/ipcam/config --repeat --no-ffmpeg-hurry-up --no-sout-transcode-hurry-up \
--rt-priority --http-reconnect --sout-transcode-high-priority --loop --no-play-and-stop \
--extraintf logger --logfile=/var/log/vlc/vlc.log --no-sout-audio \
--network-caching=3000 --sout-mux-caching=1000
Для простоты и удобства запуска будем использовать VLM. Файл /home/ipcam/config:
# MPEG-4 IP-камера
new mpeg4mux broadcast enabled
# H264 IP-камера
new h264mux broadcast enabled

setup mpeg4mux input "URL видеопотока камеры, например, rtsp://x.x.x.x/mpeg4/media.amp"
setup h264mux input "URL видеопотока камеры, например, rtsp://x.x.x.x/live/ch00_0"

# !!!Замените, где нужно СЕРВЕР!!!
# Пример транскодирования MPEG-4 в AVC + HLS
# Вероятнее всего, что параметры, наподобие vb, width, height, fps необходимо будет поднастроить.
setup mpeg4mux output '#transcode{vcodec=h264,venc=x264{cabac=yes,nf=yes,chroma-me=yes,partitions=-parti8x8-parti4x4-partp8x8-partb8x8,me=dia,keyint=15,min-keyint=8,scenecut=0,ipratio=0.71,bframes=0,qcomp=0.6,qpmin=10,qpmax=51,qpstep=4,ref=1,direct=auto,trellis=0,bpyramid=no,mixed-refs=no,weightb=no,8x8dct=no,fast-pskip=yes,mbtree=no,weightp=0,aq-mode=0,lookahead=0},vb=800,width=480,height=360,acodec=none,fps=15}:duplicate{dst="std{access=http,mux=ts,dst=:9090}",dst="std{access=livehttp{seglen=15,delsegs=true,numsegs=5,index=/usr/share/nginx/html/mpeg4mux/video.m3u8,index-url=http://СЕРВЕР/mpeg4mux/video-######.ts},mux=ts{use-key-frames},dst=/usr/share/nginx/html/mpeg4mux/video-######.ts}"}'

# Пример HLS + запись трансляции в файл
setup h264mux output '#duplicate{dst=std{access=file{append},mux=ts,dst=/home/record/record.mp4},dst=std{access=livehttp{seglen=10,delsegs=true,numsegs=5,index=/usr/share/nginx/html/h264mux/video.m3u8,index-url=http://СЕРВЕР/h264mux/video-######.ts},mux=ts,dst=/usr/share/nginx/html/h264mux/video-######.ts}}'

сontrol mpeg4mux play
сontrol h264mux play
Создаем директории для записи логов VLC и устанавливаем права:
mkdir /var/log/vlc
chown ipcam /var/log/vlc
Поясню некоторые детали. Удобство запуска через VLM заключается в том, что при этом поднимается telnet-интерфейс управления потоками, который можно использовать как для вручную, так и, например, различными скриптами. Запуск самого VLC идет от пользователя ipcam, поскольку от root’а его запускать нежелательно. HTTP Live Streaming обеспечивается с помощью модуля livehttp. Что касается транскодирования, то тут полет фантазии среди параметров x264 практически безграничен, но скажу сразу, что пока данный набор параметров себя оправдывает. К сожалению, рекомендуемое разработчиками кодирование CRF+VBV c Erlyvideo у меня нормально не заработало. В остальном, сильно рекомендую ознакомиться с конфигурацией VLM и x264.
7. Конфигурация Erlyvideo
Правим секцию rewrite в файле /etc/erlyvideo/erlyvideo.conf:
...
{rewrite, [
% Пример для транскодированного потока
{"video1", mpegts, "http://localhost:9090"},
% Пример для H264-потока с IP-камеры AirCam Ubiquiti
{"video2", rtsp, "rtsp://x.x.x.x/live/ch01_0",[{timeout,5000}]}
]}
...
8. Конфигурация nginx
Для корректной работы HLS добавляем в /etc/nginx/mime.types:
...
application/vnd.apple.mpegurl m3u8;
video/mp2t ts;
}
Создаем директории для файлов HLS:
mkdir /usr/share/nginx/html/mpeg4mux
mkdir /usr/share/nginx/html/h264mux
chown ipcam /usr/share/nginx/html/mpeg4mux /usr/share/nginx/html/h264mux
9. Запуск сервисов
su - ananin -c "/home/ipcam/start_vlc.sh &"
/etc/init.d/nginx start
/etc/init.d/erlyvideo start
Смотрим логи и проверяем, что все запустилось нормально.
10. Вывод на HTML-страницу
# Скачиваем flash-плеер, я рекомендую JW FLV Media Player, но можно попробовать и другой
wget http://www.longtailvideo.com/jw/upload/mediaplayer.zip
# Распаковываем и кладем файлы player.swf, swfobject.js и jwplayer.js в один каталог с предполагаемой
# HTML-страницей, где будем показывать видео
HTML-код:
...
<div id="mplayer">This will be replaced by the SWF.</div>
<script type="text/javascript">// <![CDATA[
   jwplayer('mplayer').setup({
     width: 640,
     height: 480,
     bufferlength: 1,
     autostart: true,
     mute: true,
     controlbar: 'none',
     provider: 'rtmp',
     streamer: 'rtmp://<СЕРВЕР>',
     file: 'video1',
     
     modes: [
         {type: 'flash', src: 'player.swf'},
         {type: 'html5',
            config: {
               file: 'http://СЕРВЕР/mpeg4mux/video',
               
               provider: 'http'
          }
       }
      ]
   });
// ]]></script>

...
11. TODO
Перечислю возможные улучшения, которые не будут лишними:
  1. Watchdog для проверки работспособности VLC, который будет перезапускать необходимые сервисы в случае потери потоков с камер
  2. Создание плейлиста для JW Player
  3. Logrotate для логов VLC
  4. Скрипт для организации архивов записей, реализуется через telnet-интерфейс VLC, задача не ахти простая, но интересная ;)
12. На будущее
На данный момент основными технологиями стриминга видео являются HTTP Live Streaming, вообще говоря, предназначенная для использования на устройствах Apple, вполне применимая в теории и на других устройствах, а также HTTP Dynamic Streaming от Adobe (в некотором смысле преемник RTMP).
Кроме того, сейчас активно развивается Adaptive Provider. В том числе, он обеспечит поддержку HLS на non-Apple устройствах, что позволит отказаться от RTMP. Для использования HDS, можно воспользоваться 3-ей версией Erlyvideo — Flussonic и его поддержкой HDS. Насколько я понял, в его ядро поддержка HLS не включена. Ну а наличие Open Source Media Framework позволяет создавать свои плееры для RTMP и HTTP-стриминга.
Ссылки:
  1. http://www.videolan.org
  2. http://erlyvideo.org/
  3. http://www.longtailvideo.com/players/jw-flv-player
  4. http://www.videolan.org/developers/x264.html
  5. http://deb-multimedia.org/
  6. http://www.debian.org/index.ru.html
  7. https://ffmpeg.org/trac/ffmpeg/wiki/UbuntuCompilationGuide
  8. https://developer.apple.com/resources/http-streaming/
  9. http://www.adobe.com/products/hds-dynamic-streaming.html
  10. http://nginx.org/ru/
Информация получена из http://flance.onego.ru/2012/09/07/387
Скопипастена для анализа и дальнейшей переработки.