# ps -ax | grep iaxmodem
Warning: bad syntax, perhaps a bogus '-'? See /usr/share/doc/procps-3.2.8/FAQ
1721 pts/0 Ss+ 0:00 /usr/bin/iaxmodem ttyIAX0
1731 pts/1 Ss+ 0:00 /usr/bin/iaxmodem ttyIAX1
1866 pts/2 S+ 0:00 grep iaxmodem

 

# ps -ax | grep faxgetty
Warning: bad syntax, perhaps a bogus '-'? See /usr/share/doc/procps-3.2.8/FAQ
1859 ? Ss 0:00 /usr/sbin/faxgetty ttyIAX0
1860 ? Ss 0:00 /usr/sbin/faxgetty ttyIAX1
1862 pts/2 S+ 0:00 grep faxgetty

После того как Skype стал частью Microsoft, остался только один надёжный способ общения
— ФАКС
Для работы с факсами (fax to email) через Asterisk я использую связку HylaFAX – IAXmodem.
Asterisk и FreePBX уже установленны, осталось установить только IAXmodem и HylaFAX

 

yum install libtiff-devel
yum groupinstall "Development tools"

 

Качаем IAXmodem и HylaFAX

 

cd ./src wget http://sourceforge.net/projects/iaxmodem/files/iaxmodem/iaxmodem-1.2.0/iaxmodem-1.2.0.tar.gz/download
wget ftp://ftp.hylafax.org/binary/linux/redhat/6.0.6/hylafax-server-6.0.6-1rhel6.x86_64.rpm
wget ftp://ftp.hylafax.org/binary/linux/redhat/6.0.6/hylafax-client-6.0.6-1rhel6.x86_64.rpm rpm -ivh hylafax-server-6.0.6-1rhel6.x86_64.rpm hylafax-client-6.0.6-1rhel6.x86_64.rpm
tar zxvf iaxmodem-1.2.0.tar.gz

 

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

cd iaxmodem-1.2.0
# cd iaxmodem-1.2.0
# cd lib/libiax2
# ./configure --prefix=/usr
# make
# make install
# cd ../../lib/spandsp
# ./configure  --prefix=/usr
# make
# make install
# cd ../../
# ./build
# cp iaxmodem /usr/bin/
# cp /usr/lib/libiax.*  /usr/lib/
mkdir /etc/iaxmodem
nano /etc/iaxmodem/ttyIAX0
device /dev/ttyIAX0
owner uucp:uucp
mode 660
port 4570
refresh 300
server 172.0.0.1
peername 2400
secret gfhjkm
cidname FAX
cidnumber 2400
codec alaw
mkdir/var/log/iaxmodem
touch /var/log/iaxmodem/iaxmodem0
touch /var/log/iaxmodem/iaxmodem1
создаем два файла
 первый

cat /etc/init/start-iaxmodem.conf
# This service start /dev/ttyIAX

start on stopped rc RUNLEVEL=[2345]
stop on starting runlevel [016]

respawn
exec /usr/local/sbin/iaxmodem ttyIAX0

второй

cat /etc/init/start-faxgetty.conf
# This service start /dev/ttyIAX

start on stopped rc RUNLEVEL=[2345]
stop on starting runlevel [016]

respawn
exec /usr/sbin/faxgetty /dev/ttyIAX0

переинициализируемся в init 3 и проверяем

ps ax | grep IAX
1641 pts/2    Ss+    0:03 /usr/local/sbin/iaxmodem ttyIAX0
5278 ?        Ss     0:00 /usr/sbin/faxgetty /dev/ttyIAX0

mcedit /etc/init/start-iaxmodems.conf
# This service starts the configured number of gettys.
start on stopped rc RUNLEVEL=[2345]

task
script
    for ttyIAX in /etc/iaxmodem/* ; do
        start iaxmodem TTY=`basename $ttyIAX`
    done
end script
mcedit /etc/init/iaxmodems.conf
# This service maintains an iaxmodem on the sepcified device.
stop on runlevel [016]
respawn
instance $TTY
exec /usr/sbin/iaxmodem $TTY
mcedit /etc/init/start-faxgettys.conf
# This service starts the configured number of faxgettys.
start on started iaxmodem
# this will run once per triggering iaxmodem instance
instance $INSTANCE

task
script
    # give it time to at least create the device
    /bin/sleep 1s
    start faxgetty TTY=$INSTANCE
end script
mcedit /etc/init/faxgetty.conf

 

# This service maintains a faxgetty on the sepcified device.
# only stop when the stopping iaxmodem is this TTY
stop on stopping iaxmodem INSTANCE=$TTY

respawn
instance $TTY
exec /usr/sbin/faxgetty $TTY

Проверяем настроенные устройства

# ps ax | grep iaxmodem
1721 pts/0 Ss+ 0:00 /usr/bin/iaxmodem ttyIAX0
1731 pts/1 Ss+ 0:00 /usr/bin/iaxmodem ttyIAX1
1866 pts/2 S+ 0:00 grep iaxmodem

# ps ax | grep faxgetty

1859 ? Ss 0:00 /usr/sbin/faxgetty ttyIAX0
1860 ? Ss 0:00 /usr/sbin/faxgetty ttyIAX1
1862 pts/2 S+ 0:00 grep faxgetty

Создаем IAX пир 2400 через FreePBX (/etc/asterisk/iax_additional.conf)

[2400]
deny=0.0.0.0/0.0.0.0
secret=gfhjkm
transfer=yes
context=from-internal
host=dynamic
type=friend
port=4570
qualify=yes
dial=IAX2/2400
mailbox=2400@device
permit=127.0.0.1/24
requirecalltoken=no
callerid=iaxmodem <2400>
setvar=REALCALLERIDNUM=2400

Для проверки в консоли астериска можно посмотреть состояние пира:
asterisk-pbx*CLI> iax2 show peers

Если все нормально переходим к установки HylaFAX.

faxsetup
echo /usr/local/sbin/faxgetty -D ttyIAX >> /etc/rc.d/rc.local
nano /var/spool/hylafax/etc/FaxDispatch
FILETYPE=pdf;
SENDTO=mail@address;

Теперь нужно сгенерировать конфиги командой faxsetup, это интерактивная утилита, на все заданные вопросы отвечаем значениями по умолчанию, кроме места где будет спрашиваться устройство модема, тут нужно указать ttyIAX0. На последний стадии hylafax попробует соединится с модемом, если результат теста ОК , то можно двигаться дальше. А дальше мы настроим уведомление о получении факса и отправку факса на заданный почтовый адрес. Для этого нам нужно перейти в директорию с конфигами hylafax /etc/hylafax и создать там файл FaxDispatch. Как его наполнить детально описано тут. Не забываем выставить владельца на файл uccp:uccp. Проверить отправку факса можно командой : sendfax -n -T 2 -N -d [номер куда отсылать факс] [путь к файлу]

Для того что бы HylaFAX находил IAXmodem нужно скопировать конфиг config.ttyIAX из исходников iaxmodem в /var/spool/hylafax/etc/

cp /usr/src/iaxmodem-1.2.0/config.ttyIAX /var/spool/hylafax/etc/

Запускаем iaxmodem и faxgetty или перегружаем систему

service iaxmodem start faxgetty ttyIAX

Всё готово, можно повесить входящий маршрут во FreePBX на пир 2400 и получать факсы на почтовый@адрес.

Для отправки факсов нужно добавить факсюзера

faxadduser -p gfhjkm -u 1000 fax

в /var/spool/hylafax/etc/hosts.hfaxd
Добавляться юзер fax c паролем gfhjkm. Так же этот этот юзер может просматривать тифы факсов по ссылке на ftp в письме от HylaFAX, если в конфиге /var/spool/hylafax/etc/config.ttyIAX изменить права на файл полученного факса

RecvFileMode: 0644

И установить принтер HylaFAX http://www.hylafax.org/content/Desktop_Client_Software
fax
Если нужен ещё один модем то просто создаем ещё один файл конфигурации в /etc/iaxmodem, например ttyIAX1, отличающийся только значениями:

device          /dev/ttyIAX1
port            4571
peername        1001

и пир 1001 во FreePBX и запускаем ещё один демон faxgetty

echo /usr/local/sbin/faxgetty -D ttyIAX1 >> /etc/rc.d/rc.local

Так же нужен ещё один конфиг IAXmodem для HylaFAX

cp /usr/src/iaxmodem-1.2.0/config.ttyIAX /var/spool/hylafax/etc/config.ttyIAX1

В /var/spool/hylafax/etc/FaxDispatch можно распределить на какие адреса будут отправляться факсы с каждого модема:

FILETYPE=pdf;
case "$DEVICE" in
    ttyIAX)
        SENDTO=admin@adminunix.ru.ru
    ;;
    ttyIAX1)
        SENDTO=admin@adminunix.ru.ru
    ;;
esac

full => notice,warning,error,debug,verbose

2) зайти в консоль asterisk -r и сказать:
core set debug 4
core set verbose 4
sip set debug on

3) после это выйти из консоли и совершить тестовый звонок. После этого посмотреть лог звонка в файле /var/log/asterisk/full (у меня в центосе так).

Маленькая ремарка для начинающих админов (типа меня). Чтобы удобнее было отследить звонок в логе надо перед звонком и после него из консоли линукса сказать
#echo «@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@» >> /var/log/asterisk/full
в результате информация о звонке будет заключена между этими метками.

  1. HylaFAX Installation: HylaFax is an enterprise-class system for sending and receiving facsimiles as well as for sending alpha-numeric pages. Download the the latest release and their dependency sharutils first; then use rpm to install them.
    wget ftp://ftp.hylafax.org/binary/linux/redhat/6.0.6/hylafax-server-6.0.6-1rhel6.x86_64.rpm
    wget ftp://ftp.hylafax.org/binary/linux/redhat/6.0.6/hylafax-client-6.0.6-1rhel6.x86_64.rpm
    wget ftp://ftp.distributed.net/centos/6.5/os/x86_64/Packages/sharutils-4.7-6.1.el6.x86_64.rpm
    rpm -ivh hylafax-server-6.0.6-1rhel6.x86_64.rpm hylafax-client-6.0.6-1rhel6.x86_64.rpm sharutils-4.7-6.1.el6.x86_64.rpm

    After install successfully, when running sendfax to test, get error like /usr/sbin/textfmt: No font metric information found for “Courier-Bold”:

    # sendfax -n -d 991215 /etc/hylafax/hyla.conf
    /usr/sbin/textfmt: No font metric information found for "Courier-Bold".
    Usage: /usr/sbin/textfmt [-1] [-2] [-B] [-c] [-D] [-f fontname] [-F fontdir(s)] [-m N] [-o #] [-p #] [-r] [-U] [-Ml=#,r=#,t=#,b=#] [-V #] files... &gt;out.ps
    Default options: -f Courier -1 -p 11bp -o 0
    Error converting document; command was "/usr/sbin/textfmt -B -f Courier-Bold    -Ml=0.4in -p 11 -s default &gt;'/tmp//sndfaxZDqe83' &lt;'/etc/hylafax/hyla.conf'"

    This is a bug in ghostscript-8.70, to fix the error, download & extract Courier-Bold.pfa and Courier-Bold.afm from htmldoc package, copy it to /usr/share/fonts/default/ghostscript/; then edit /usr/share/ghostscript/8.70/Resource/Init/Fontmap.GS, search and change line from /Courier-Bold /NimbusMonL-Bold ; to /Courier-Bold (Courier-Bold.pfa) ;

    # wget http://www.msweet.org/files/project1/htmldoc-1.8.28-source.zip
    # unzip htmldoc-1.8.28-source.zip
    # cp htmldoc-1.8.28/fonts/Courier-Bold.afm /usr/share/fonts/default/ghostscript/
    # cp htmldoc-1.8.28/fonts/Courier-Bold.pfa /usr/share/fonts/default/ghostscript/
    Try sendfax again now and it should work.
  2. IaxModem compiler and installation: Install development tools first; then download IaxModem latest source file and untar it; then build IaxModem with dynamic linking.
    # yum groupinstall "Development tools"
    
    # wget http://sourceforge.net/projects/iaxmodem/files/iaxmodem/iaxmodem-1.2.0/iaxmodem-1.2.0.tar.gz/download
    # tar xzvf iaxmodem-1.2.0.tar.gz
    
    # cd iaxmodem-1.2.0
    # cd lib/libiax2
    # ./configure --prefix=/usr
    # make
    # make install
    
    # cd ../../lib/spandsp
    # ./configure  --prefix=/usr
    # make
    # make install
    # cd ../../
    # ./build

    After build successfully, copy executable file iaxmodem to /usr/bin, also copy /usr/lib/libiax.* to /usr/lib64, if don’t copy libiax.*, there will be cannot find shared libiax errror when start iaxmodem.

    # cp iaxmodem  /usr/bin/
    # cp /usr/lib/libiax.*  /usr/lib/

An explantion of the example /var/lib/tftpboot/pxelinux.cfg/default:

  • DEFAULT vesamenu.c32 — We are informing PXELINUX to load this file. We could substitute a menu entry instead, or boot a kernel and initrd.
  • TIMEOUT 600 — 600 seconds will pass before action is taken on the users behalf if no keys are pressed
  • ONTIMEOUT — Indicates what action is performed when the TIMEOUT expires. In the above example, we are loading the menu itemBootLocal. If after 5 minutes the user does not choose a menu item, the system will attempt to boot to a local hard disk.

  • PROMPT 0 — Will allow PXELINUX to prompt us for input
  • MENU INCLUDE pxelinux.cfg/pxe.conf — Load additional configuration options from another file. The can be included in the same file, however, I find it a neater look to the menu configuration to place some options in other files.
  • NOESCAPE 1 — Do not allow the user to escape out of the menu system.
  • MENU BEGIN — Start a new menu
  • MENU TITLE — Display title for menu
  • LABEL — Refer to this menu by label
  • MENU LABEL — Display title for label
  • TEXT HELP — Optional text displayed on screen when highlighted
  • ENDTEXT — End of optional text
  • MENU SEPARATOR — Inserts a blank non-selectable line
  • MENU INCLUDE — Include items from another file and create a menu from them. This is used to create the sub-menus
  • MENU END — End of a menu item

Example pxelinux.cfg/pxe.conf:

MENU TITLE  PXE Server
MENU BACKGROUND pxelinux.cfg/logo.png
NOESCAPE 1
ALLOWOPTIONS 1
PROMPT 0
menu width 80
menu rows 14
MENU TABMSGROW 24
MENU MARGIN 10
menu color border               30;44      #ffffffff #00000000 std

The above pxe.conf file is configuring

  1. The colors used
  2. The width
  3. The number of items displayed
  4. The backgroud image

 

 

https://help.ubuntu.com/community/PXEInstallMultiDistro

Для исключения из обновления пакетов

 
echo "packageName hold" | dpkg --set-selections
echo "lighttpd hold" | dpkg --set-selections

 

При периодическом обновлении системы, начинают скапливаться старые версии ядер, которые висят в загрузке Grub и занимают место на Вашем HDD.

Выведем все ядра, которые присутствуют в системе:

$ dpkg -l | grep linux-image
ii linux-image-2.6-686  2.6.32+28  Linux 2.6 for modern PCs (meta-package)
ii  linux-image-2.6.26-2-686  2.6.26-26lenny1  Linux 2.6.26 image on PPro/Celeron/PII/PIII/P4
ii  linux-image-2.6.32-5-486  2.6.32-29 Linux 2.6.32 for old PCs
ii  linux-image-2.6.32-5-686  2.6.32-29 Linux 2.6.32 for modern PCs

Последняя строчка – текущее ядро, т.е. 2.6.32-5-686. Остальные можно удалять.
Удаляем ядро:

$ aptitude purge linux-image-2.6.26-2-686

Вторым шагом уничтожаем ненужные заголовки. Делаем по аналогии:

$ dpkg -l | grep linux-headers
ii  linux-headers-2.6.32-5-686  2.6.32-29 Header files for Linux 2.6.32-5-686
ii  linux-headers-2.6.32-5-common 2.6.32-29 Common header files for Linux 2.6.32-5

Соответственно удаляем ненужные заголовки, если они есть (у меня их нет, поэтому здесь просто показываю пример команды для их удаления):

$ aptitude purge linux-headers-2.6.32-24 linux-headers-2.6.32-24-generic

После всего делаем обновление загрузчика Grub, чтобы ядра пропали из списка загрузки:

$ update-grub

Multicast (англ. групповая передача) — специальная форма широковещания, при которой копии пакетов направляются определённому подмножеству адресатов. Технология IP Multicast использует адреса с 224.0.0.0 до 239.255.255.255. Поддерживается статическая и динамическая адресация. Примером статических адресов являются 224.0.0.1 — адрес группы, включающей в себя все узлы локальной сети, 224.0.0.2 — все маршрутизаторы локальной сети. Диапазон адресов с 224.0.0.0 по 224.0.0.255 зарезервирован для протоколов маршрутизации и других низкоуровневых протоколов поддержки групповой адресации. Остальные адреса динамически используются приложениями. Для определения членов различных групп в локальной сети маршрутизатор использует протокол IGMP. Один из маршрутизаторов подсети периодически опрашивает узлы подсети, чтобы узнать, какие группы используются приложениями узлов. На каждую группу генерируется только один ответ в подсети. Для того чтобы стать членом новой группы, узел получателя инициирует запрос на маршрутизатор локальной сети. Сетевой интерфейс узла-получателя настраивается на прием пакетов с этим групповым адресом. Каждый узел самостоятельно отслеживает свои активные групповые адреса, и когда отпадает необходимость состоять в данной группе, прекращает посылать подтверждения на IGMP — запросы. Результаты IGMP — запросов используются протоколами групповой маршрутизации для передачи информации о членстве в группе на соседние маршрутизаторы и далее по сети.

VLC media player (первоначально от VideoLAN Client) — это свободный медиаплеер.
Программа работает на большинстве современных операционных систем, в частности на:
* GNU/Linux
* BSD (FreeBSD, NetBSD, OpenBSD, Apple Darwin, Mac OS X)
* Solaris
* и других разновидностях UNIX…
* Семейство BeOS (BeOS, Zeta-OS, Haiku-OS)
* QNX
* MorphOS
* Microsoft Windows
* Microsoft Windows CE
Плеер VLC можно использовать в качестве сервера для трансляции потока аудио/видео по сети (поддерживает протоколы IPv4 и IPv6). Для воспроизведения файлов мультимедиа не требуется установка дополнительных кодеков, они уже «встроены» в программу. VLC может воспроизводить DVD и потоковое незашифрованное (бесплатное) видео (IPTV) и Интернет-радио. Также программа может записывать потоковое аудио/видео на компьютер. VLC хорошо воспроизводит испорченные файлы.

Для вещания был выбран слабенький Pentium III 800MHz c 512 Mb RAM и с дисковой подсистемой в RAID1. На все это железо воздрузилась Gentoo Linux:

Portage 2.1.6.4 (default/linux/x86/2008.0, gcc-4.1.2, glibc-2.6.1-r0, 2.6.25-gentoo-r8 i686)
=================================================================
System uname: Linux-2.6.25-gentoo-r8-i686-Pentium_III_-Coppermine-with-glibc2.0
Timestamp of tree: Mon, 09 Feb 2009 22:15:02 +0000
app-shells/bash: 3.2_p39
dev-lang/python: 2.4.4-r13, 2.5.2-r7
dev-python/pycrypto: 2.0.1-r6
sys-apps/baselayout: 1.12.11.1
sys-apps/sandbox: 1.2.18.1-r2
sys-devel/autoconf: 2.13, 2.63
sys-devel/automake: 1.7.9-r1, 1.9.6-r2, 1.10.2
sys-devel/binutils: 2.18-r3
sys-devel/gcc-config: 1.4.0-r4
sys-devel/libtool: 1.5.26
virtual/os-headers: 2.6.27-r2


VLC был собран со следующими флагами:

media-video/vlc-0.9.7 USE="a52 aac ffmpeg hal libgcrypt mp3 mpeg ncurses stream x264 -X -aalib -alsa (-altivec) -arts -atmo -avahi -bidi -cdda -cddax% -cddb -cdio -dbus -dc1394 -debug -dirac -directfb -dts -dvb -dvd -esd -fbcon -flac -fluidsynth -fontconfig -ggi -gnome -gnutls -httpd -id3tag -jack -kate -libass -libcaca -libnotify -libsysfs -libv4l2 -lirc -live -lua -matroska -mmx -modplug -musepack -nsplugin -ogg -opengl -optimisememory -oss -pda% -png -pulseaudio -pvr -qt4 -remoteosd -rtsp -run-as-root% -samba -schroedinger -sdl -sdl-image -seamonkey -shout -skins -speex -sse -svg -svga -taglib -theora -truetype -twolame -upnp -v4l -v4l2 -vcdinfo -vcdx -vlm -vorbis -win32codecs -xinerama -xml -xosd -xv -zvbi (-vcd%)"

Соответственно можно поиграть флагами кому как хочется, обязателен флаг stream. Описание флагов можно подсмотреть командой equery u vlc из пакета gentoolkit. Единственное на что хочется обратить внимание, это флаг optimisememory. Собирал с ним 3 предыдущих версии, процесс за пару дней сжирал на 100% ресурсы процессора и умирал.

Для запуска я писал демона, который удалял старый плейлист, создавал новый и запускал собственно vlc в screen:
vlc -v /home/ftp/pub/playlist.m3u --sout '#standard{access=udp{ttl=15},mux=ts{tsid=22,pid-video=23,pid-audio=24,pid-pmt=25,use-key-frames},dst=[multcast ip]}' --random --loop --volume 100

Screen, а не демон, был выбран для паралельного запуска нескольких каналов, для более простого и удобного мониторинга процесса. PID'ы мне нужны чтобы STB и MidlleWare все правильно скушали. Файлы конвертировались в:

Формат : MPEG Video
Версия формата : Version 2
Настройка матрицы формата : Standard
Режим расчёта битрейта : Переменный
Битрейт : 7 762 Кбит/сек
Ширина : 1 920 пикс.
Высота : 1 080 пикс.
Соотношение кадра : 16/9
Частота кадров : 30,000 кадр/сек
Колориметрия : 4:2:0
Тип развёртки : Прогрессивная


Формат : MPEG Audio
Версия формата : Version 1
Профайл формата : Layer 2
Режим расчёта битрейта : Постоянный
Битрейт : 64,0 Кбит/сек
Канал(ы) : 2 канала(ов)
Частота : 44,1 КГц
Разрешение : 16 бит


Производительность:
up 70 days, 17:08, load average: 0.16, 0.17, 0.11

Загрузка сети:
30 second input rate 8718000 bits/sec, 801 packets/sec
30 second output rate 2000 bits/sec, 2 packets/sec

 

 

http://habrahabr.ru/post/51667/