По вашему запросу ничего не найдено :(
Убедитесь, что запрос написан правильно, или посмотрите другие
наши статьи:
Многие слышали, но боялись "пощупать" страшного зверя по имени FreeSwitch (FS). Уверяю Вас, что страшного ничего нет. Правда придется перестроить свои мозги на его понимание. Он сильно отличается от Asterisk. И хотя FS такая же программная АТС как и Asterisk, но задачи у них разные. FS позиционируется как "провайдерская" АТС, а Asterisk офисный вариант. Несмотря на это, я его использую даже, как говорится, "для дома, для семьи", то есть дома на одноплатнике Orange PI Plus 2E. Так как на нем стоит Ubuntu 16, то описывать установку я буду для Ubuntu из исходников.
Если кому-то нужно попроще, то может установить на Debian (разработчики именно его рекомендуют.
Как поставить из пакетов можно почитать здесь https://freeswitch.org/confluence/display/FREESWITCH/Linux
А для самых искушенных даже на Windows :) https://freeswitch.org/confluence/display/FREESWITCH/Windows
Сначала необходимо выполнить обновление системы:
apt-get update
apt-get upgrade
Установим зависимости:
apt-get install autoconf automake devscripts gawk g++ git-core libjpeg-dev libncurses5-dev libtool make python-dev gawk pkg-config libtiff5-dev libperl-dev libgdbm-dev libdb-dev gettext libssl-dev libcurl4-openssl-dev libpcre3-dev libspeex-dev libspeexdsp-dev libsqlite3-dev libedit-dev libldns-dev libpq-dev libtool-bin libopus-dev libshout3-dev libmpg123-dev libmp3lame-dev libsndfile-dev libavresample-dev libswscale-dev libpng-dev libpng++-dev mpg123
После этого перезагружаемся:
reboot
Создаем папку и клонируем гит:
cd /usr/src
git clone -b v1.6 https://freeswitch.org/stash/scm/fs/freeswitch.git
cd /usr/src/freeswitch
./bootstrap.sh –j
Подключаем необходимые модули:
mcedit modules.conf
+ mod_rtmp
+ mod_directory
+ mod_callcenter
+ mod_dingaling
+ mod_shout
+ mod_cidlookup
+ mod_curl
+ mod_xml_curl
Мне нужно было использовать zrtp и хранить данные в базе PostgreSQL (кстати, разработчики считают MySQL недобазой :)) Собираем с ключами:
./configure --enable-zrtp --enable-core-pgsql-support
make
make install
Если при сборке FS ругается на openssl (switch_core_cert.lo) или что то подобное, то нужно проверить версию. Под 1.1.0 не устанавливается. Нужно ставить 1.0.2
Устанавливаем звуковые файлы:
8 kHz Standard Audio
make sounds-install
make moh-install
16 kHz High Definition Audio
make hd-moh-install
make hd-sounds-install
32 kHz Ultra High Definition Audio
make uhd-moh-install
make uhd-sounds-install
48 kHz CD Quality Audio
make cd-sounds-install
make cd-moh-install
Установим русские звуковые файлы:
make sounds-ru-install
make cd-sounds-ru-install
make uhd-sounds-ru-install
make hd-sounds-ru-install
Установим права и владельцев:
adduser --disabled-password --quiet --system --home /usr/local/freeswitch --gecos "FreeSWITCH Voice Platform" --ingroup daemon freeswitch
chown -R freeswitch:daemon /usr/local/freeswitch/
chmod -R o-rwx /usr/local/freeswitch/
Создадим init скрипт для запуска /etc/init.d/freeswitch:
#!/bin/bash
### BEGIN INIT INFO
# Provides: freeswitch
# Required-Start: $local_fs $remote_fs
# Required-Stop: $local_fs $remote_fs
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Description: Freeswitch debian init script.
# Author: Matthew Williams
#
### END INIT INFO
# Do NOT "set -e"
# PATH should only include /usr/* if it runs after the mountnfs.sh script
PATH=/sbin:/usr/sbin:/bin:/usr/bin:/usr/local/bin
DESC="Freeswitch"
NAME=freeswitch
DAEMON=/usr/local/freeswitch/bin/$NAME
DAEMON_ARGS="-nc"
PIDFILE=/usr/local/freeswitch/run/$NAME.pid
SCRIPTNAME=/etc/init.d/$NAME
FS_USER=freeswitch
FS_GROUP=daemon
# Exit if the package is not installed
[ -x "$DAEMON" ] || exit 0
# Read configuration variable file if it is present
[ -r /etc/default/$NAME ] && . /etc/default/$NAME
# Load the VERBOSE setting and other rcS variables
. /lib/init/vars.sh
# Define LSB log_* functions.
# Depend on lsb-base (>= 3.0-6) to ensure that this file is present.
. /lib/lsb/init-functions
#
# Function that sets ulimit values for the daemon
#
do_setlimits() {
ulimit -c unlimited
ulimit -d unlimited
ulimit -f unlimited
ulimit -i unlimited
ulimit -n 999999
ulimit -q unlimited
ulimit -u unlimited
ulimit -v unlimited
ulimit -x unlimited
ulimit -s 240
ulimit -l unlimited
return 0
}
#
# Function that starts the daemon/service
#
do_start()
{
# Set user to run as
if [ $FS_USER ] ; then
DAEMON_ARGS="`echo $DAEMON_ARGS` -u $FS_USER"
fi
# Set group to run as
if [ $FS_GROUP ] ; then
DAEMON_ARGS="`echo $DAEMON_ARGS` -g $FS_GROUP"
fi
# Return
# 0 if daemon has been started
# 1 if daemon was already running
# 2 if daemon could not be started
start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $DAEMON --test > /dev/null --
|| return 1
do_setlimits
start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $DAEMON --background --
$DAEMON_ARGS
|| return 2
# Add code here, if necessary, that waits for the process to be ready
# to handle requests from services started subsequently which depend
# on this one. As a last resort, sleep for some time.
}
#
# Function that stops the daemon/service
#
do_stop()
{
# Return
# 0 if daemon has been stopped
# 1 if daemon was already stopped
# 2 if daemon could not be stopped
# other if a failure occurred
start-stop-daemon --stop --quiet --retry=TERM/30/KILL/5 --pidfile $PIDFILE --name $NAME
RETVAL="$?"
[ "$RETVAL" = 2 ] && return 2
# Wait for children to finish too if this is a daemon that forks
# and if the daemon is only ever run from this initscript.
# If the above conditions are not satisfied then add some other code
# that waits for the process to drop all resources that could be
# needed by services started subsequently. A last resort is to
# sleep for some time.
start-stop-daemon --stop --quiet --oknodo --retry=0/30/KILL/5 --exec $DAEMON
[ "$?" = 2 ] && return 2
# Many daemons don't delete their pidfiles when they exit.
rm -f $PIDFILE
return "$RETVAL"
}
#
# Function that sends a SIGHUP to the daemon/service
#
do_reload() {
#
# If the daemon can reload its configuration without
# restarting (for example, when it is sent a SIGHUP),
# then implement that here.
#
start-stop-daemon --stop --signal 1 --quiet --pidfile $PIDFILE --name $NAME
return 0
}
case "$1" in
start)
[ "$VERBOSE" != no ] && log_daemon_msg "Starting $DESC" "$NAME"
do_start
case "$?" in
0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;;
2) [ "$VERBOSE" != no ] && log_end_msg 1 ;;
esac
;;
stop)
[ "$VERBOSE" != no ] && log_daemon_msg "Stopping $DESC" "$NAME"
do_stop
case "$?" in
0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;;
2) [ "$VERBOSE" != no ] && log_end_msg 1 ;;
esac
;;
status)
status_of_proc -p $PIDFILE $DAEMON $NAME && exit 0 || exit $?
;;
#reload|force-reload)
#
# If do_reload() is not implemented then leave this commented out
# and leave 'force-reload' as an alias for 'restart'.
#
#log_daemon_msg "Reloading $DESC" "$NAME"
#do_reload
#log_end_msg $?
#;;
restart|force-reload)
#
# If the "reload" option is implemented then remove the
# 'force-reload' alias
#
log_daemon_msg "Restarting $DESC" "$NAME"
do_stop
case "$?" in
0|1)
do_start
case "$?" in
0) log_end_msg 0 ;;
1) log_end_msg 1 ;; # Old process is still running
*) log_end_msg 1 ;; # Failed to start
esac
;;
*)
# Failed to stop
log_end_msg 1
;;
esac
;;
*)
#echo "Usage: $SCRIPTNAME {start|stop|restart|reload|force-reload}" >&2
echo "Usage: $SCRIPTNAME {start|stop|restart|force-reload}" >&2
exit 3
;;
esac
exit 0
Установим ссылку на CLI
cd /usr/local/bin/
ln -s /usr/local/freeswitch/bin/fs_cli fs_cli
Проверим всё ли запускается:
cd /usr/local/freeswitch/bin
./freeswitch
freeswitch@s02d> sofia status (или просто нажимаем F5)
freeswitch@s02d> list_users
Если нет ошибок, и высветились профили и пользователи, то можно отключаться:
freeswitch@s02d> shutdown
Меняем стандартный пароль для всех пользователей (указав свой):
mcedit /usr/local/freeswitch/conf/vars.xml
<X-PRE-PROCESS cmd="set" data="default_password=lkhd456hkhggl2"/>
Включаем русский язык, если нужно:
mcedit /usr/local/freeswitch/conf/vars.xml
<X-PRE-PROCESS cmd="set" data="sound_prefix=$${sounds_dir}/ru/RU/elena"/>
<X-PRE-PROCESS cmd="set" data="default_language=ru"/>
После правки применяем изменения:
fs_cli -x "reloadxml"
Устанавливаем необходимые кодеки:
mcedit /usr/local/freeswitch/conf/vars.xml
<X-PRE-PROCESS cmd="set" data="global_codec_prefs=OPUS,PCMU,PCMA,VP8"/>
<X-PRE-PROCESS cmd="set" data="outbound_codec_prefs=OPUS,PCMU,PCMA,VP8"/>
Ну и в конце стартуем FS:
service freeswitch start
Для подключения к FS используем следующую команду:
fs_cli -rRS
Вот и всё. Мы установили и запустили FreeSwitch. О том, как настраивать пользователей, гейты, диалплан читайте в следующих статьях.
На сегодняшний день распространение компьютерных сетей ни у кого не вызывает удивления. Десятки тысяч компаний ведут свою деятельность, так или иначе используя компьютеры, ноутбуки и другие устройства. Поэтому одной из самых востребованных на рынке на сегодняшний день является профессия сетевого администратора. В любой мало-мальски современной компании именно этот сотрудник является ключевым, ведь без его деятельности остальные сотрудники не смогут оперативно обмениваться данными для обработки, а значит затратят больше времени и в итоге будут оставлены позади более технологичными и эффективными конкурентами.
Что это вообще такое?
Сетевое администрирование это, говоря по-простому, обслуживание компьютерной сети организации. То есть, прокладка и настройка сети, подключение новых устройств, создание новых локальных сетей и подсетей, курирование работы сети, а также повышение эффективности обмена данными путем внедрения новых методик.
Итак, чтобы получить профессию сетевого администратора прежде всего необходимо пройти обучение. Отмечу, что специалисты с высшим или средним специальным профильным образованием гораздо более востребованы на рынке труда. Однако сейчас получение профильного или смежного образования не является проблемой многие ВУЗы и ССУЗы стран СНГ подготавливают специалистов соответствующей квалификации. Специальность "сетевой администратор" или "сетевой инженер" можно найти, например, в московских МТУСИ, МФТИ, МИФИ, МГУ, МГТУ Баумана, МИРЭА, питерских СПбГУ, СПбГМТУ, СПбПУ, новосибирских ННИГУ и СГУГиТ, минских БГУ и БГУИР Более двух с половиной сотен ВУЗов предлагают обучение по данной специальности
А самому можно?
Конечно, есть вариант изучить сетевое администрирование самостоятельно на недостаток информации в век интернета жаловаться грех. Однако в этом случае будущий сетевой администратор должен обладать хорошей самодисциплиной и усидчивостью для усвоения теоретического материала.
Однако, теория теорией, а практика - это практика. Не лишним будет устроиться на стажировку помощником сетевого администратора в какую-нибудь организацию, чтобы постичь практическую сторону вопроса: архитектуру сетей, настройку коммутаторов, обновление сетевого ПО на серверах и рабочих станциях (особенно полезным будет стать специалистом-универсалом: проводить настройку сети под ОС Linux и Windows, уметь работать с DevOps, освоить искусство построения сети). Также это хороший шанс для продолжения карьеры.
Имея за плечами опыт работы с локальными сетями, можно добавлять новую строчку в резюме. Также не лишним будет отметить участие в профильных обучающих лекциях, семинарах и вебинарах. Это также необходимые для работы мероприятия, поскольку в этой профессии, чтобы оставаться конкурентоспособным специалистом, необходимо идти в ногу со временем, изучать и применять новые методы работы и уметь работать с большим количеством техники, как правило, "заточенной" под различные сетевые стандарты. Не пренебрегайте дополнительным обучением, особенно если по его итогам обучающая компания выдает сертификат о прохождении многие работодатели сочтут наличие такого документа бесспорным плюсом. (Причем, даже если обучение будет пройдено не по компьютерным сетям, а, скажем, по тестированию программ это смежные специальности).
Итак, пройдя вышеописанные этапы Вам осталось только найти подходящую вакансию. Разместите резюме на соответствующем сайте и ждите звонков от компаний, заинтересованных в поиске сотрудника. Сразу обращаю Ваше внимание, что многие компании понимают работу системного администратора как "слесаря по компьютерам", который будет выполнять кучу работы, не связанной с тем, что прописано в должностных обязанностях. Поэтому не стесняйтесь уточнять этот вопрос при телефонных беседах или при личных собеседованиях.
А что в итоге?
Пройдя собеседование и получив согласие, присмотритесь к организации, в которой Вы планируете работать. Поищите в интернете отзывы бывших сотрудников. Если всё в порядке смело заступайте в должность и несите трудовую в отдел кадров. Скоро в ней будет красоваться надпись "Сетевой администратор".
Заработная плата на этом поприще (на старте!) составляет примерно 50-70 тысяч рублей. Это не так уж и мало в наше время. Но если найти узкую специализацию и продолжать в ней развитие есть все шансы эту цифру удвоить, а то и утроить разумеется, если повезет с компанией-работодателем.
Команды Linux могут показаться пугающими на первый взгляд, если вы не привыкли использовать терминал. Для выполнения операций и процессов в вашей системе Linux существует огромное количество команд.
Независимо от того, являетесь ли вы новичком в Linux или опытным пользователем, полезно иметь список общих команд под рукой. В этом руководстве вы найдете часто используемые команды Linux, а также загружаемую шпаргалку (так называемый cheatsheet) с синтаксисом и примерами.
Скачать PDF
Список команд Linux
Важное замечание: В зависимости от настроек вашей системы для выполнения некоторых из приведенных ниже команд может потребоваться запуск sudo.
Информация об оборудовании
Показать сообщения, которые выводило ядро во время загрузки:
dmesg
Показать информацию о процессоре:
cat /proc/cpuinfo
Показать свободную и использованную память с:
free -h
Список информации о конфигурации оборудования:
lshw
Показать информацию о блочных устройствах:
lsblk
Показать устройства PCI в древовидной схеме:
lspci -tv
Отображение USB-устройств в виде древовидной диаграммы:
lsusb -tv
Показать информацию об оборудовании из BIOS:
dmidecode
Показать информацию о диске:
hdparm -i /dev/disk
Провести тест скорости чтения на устройстве/диске:
hdparm -tT /dev/[device]
Проверка на нечитаемые блоки на устройстве/диске:
badblocks -s /dev/[device]
Поиск
Поиск определенного паттерна в файле:
grep [pattern] [file_name]
Рекурсивно искать паттерн в каталоге:
grep -r [pattern] [directory_name]
Найти все файлы и каталоги, связанные с конкретным именем:
locate [name]
Вывести список имен, начинающиеся с указанного символа a в указанном месте /folder/location, с помощью команды find:
find [/folder/location] -name [a]
Просмотр файлов, размер которых превышает указанный размер + 100M в папке:
find [/folder/location] -size [+100M]
Файлы
Список файлов в каталоге:
ls
Список всех файлов (включая скрытые):
ls -a
Показать каталог, в котором вы сейчас работаете:
pwd
Создать новый каталог:
mkdir [directory]
Удалить файл:
rm [file_name]
Удалить каталог рекурсивно:
rm -r [directory_name]
Рекурсивно удалить каталог без подтверждения:
rm -rf [directory_name]
Скопировать содержимое одного файла в другой файл:
cp [file_name1] [file_name2]
Рекурсивно скопировать содержимое одного файла во второй файл:
cp -r [directory_name1] [directory_name2]
Переименовать имя_файла1 в имя_файла2:
mv [file_name1] [file_name2]
Создать символическую ссылку на файл:
ln -s /path/to/[file_name] [link_name]
Создать новый файл:
touch [file_name]
Показать содержимое файла:
more [file_name]
Показать первые 10 строк файла:
head [file_name]
Показать последние 10 строк файла:
tail [file_name]
Зашифровать файл:
gpg -c [file_name]
Расшифровать файл:
gpg [file_name.gpg]
Показать количество слов, строк и байтов в файле:
wc
Навигация
Подняться на один уровень вверх в структуре дерева каталогов:
cd ..
Перейти в каталог $ HOME:
cd
Изменить местоположение на указанный каталог:
cd /chosen/directory
Сжатие файлов
Заархивировать существующий файл:
tar cf [compressed_file.tar] [file_name]
Извлечь заархивированный файл:
tar xf [compressed_file.tar]
Создайте сжатый gzip tar-файл:
tar czf [compressed_file.tar.gz]
Сжать файл с расширением .gz:
gzip [file_name]
Передача файлов
Скопировать файл в каталог сервера через ssh:
scp [file_name.txt] [server/tmp]
Синхронизировать содержимое каталога с резервным каталогом:
rsync -a [/your/directory] [/backup/]
Пользователи
Показать подробности об активных пользователях:
id
Показать последние системные логины:
last
Показать, кто в данный момент вошел в систему:
who
Показать, какие пользователи вошли в систему и их активность:
w
Добавить новую группу:
groupadd [group_name]
Добавить нового пользователя:
adduser [user_name]
Добавить пользователя в группу:
usermod -aG [group_name] [user_name]
Удалить пользователя:
userdel [user_name]
Изменить информацию о пользователе:
usermod
Установка пакета
Список всех установленных пакетов с yum:
yum list installed
Найти пакет по связанному ключевому слову:
yum search [keyword]
Показать информацию и краткую сводку о пакете:
yum info [package_name]
Установить пакет с помощью менеджера пакетов >YUM:
yum install [package_name.rpm]
Установить пакет с помощью менеджера пакетов >DNF:
dnf install [package_name.rpm]
Установить пакет с помощью менеджера пакетов >APT:
apt-get install [package_name]
Установить пакет .rpm из локального файла:
rpm -i [package_name.rpm]
Удалить пакет .rpm:
rpm -e [package_name.rpm]
Установить программное обеспечение из исходного кода:
tar zxvf [source_code.tar.gz]
cd [source_code]
./configure
make
make install
Процессы
Показать снимок активных процессов:
ps
Показать процессы в древовидной диаграмме:
pstree
Показать карту использования памяти процессами:
pmap
Показать все запущенные процессы:
top
Завершить процесс Linux с заданным идентификатором:
kill [process_id]
Завершить процесс с определенным именем:
pkill [proc_name]
Завершите все процессы, помеченные как proc:
killall [proc_name]
Список и сводка остановленных заданий в фоновом режиме:
bg
Перевод последней фоновой задачи в активный режим:
fg
Перевод конкретной задачи в активный режим:
fg [job]
Список файлов, открытых запущенными процессами:
lsof
Системная информация
Показать информацию о системе:
uname -r
Показать информацию о релизе ядра:
uname -a
Показать, как долго работает система, включая среднюю нагрузку:
uptime
Показать имя хоста системы:
hostname
Показать IP-адрес системы:
hostname -i
История перезагрузки системы:
last reboot
Показать текущее время и дату:
date
Запрос и изменение системных часов:
timedatectl
Показать текущий календарь (месяц и день):
cal
Список залогиненых пользователей:
w
Показать текущего пользователя:
whoami
Показать информацию о конкретном пользователе:
finger [username]
Использование диска
Показать свободное и использованное пространство на смонтированных системах:
df -h
Показать свободные иноды (inode) на смонтированных файловых системах:
df -i
Показать разделы диска, размеры и типы:
fdisk -l
Показать использование диска для всех файлов и каталогов:
du -ah
Показать использование диска в каталоге, в котором вы находитесь:
du -sh
Показать целевую точку монтирования для всей файловой системы:
findmnt
Смонтировать устройство:
mount [device_path] [mount_point]
SSH
Подключиться к хосту как пользователь:
ssh user@host
Подключиться к хосту через SSH порт по умолчанию 22:
ssh host
Подключиться к хосту, используя определенный порт:
ssh -p [port] user@host
Подключиться к хосту через telnet порт по умолчанию 23:
telnet host
Разрешение файлов
Назначить права на чтение, запись и выполнение всем:
chmod 777 [file_name]
Дать владельцу право на чтение, запись и выполнение, а также разрешение на чтение и выполнение для группы и других пользователей:
chmod 755 [file_name]
Назначить полное разрешение владельцу, а также разрешение на чтение и запись для группы и других пользователей:
chmod 766 [file_name]
Изменить владельца файла:
chown [user] [file_name]
Изменить владельца и групповое владение файлом:
chown [user]:[group] [file_name]
Сеть
Список IP-адресов и сетевых интерфейсов:
ip addr show
Назначить IP-адрес интерфейсу eth0:
ip address add [IP_address]
Отображение IP-адресов всех сетевых интерфейсов:
ifconfig
Показать активные (прослушиваемые) порты:
netstat -pnltu
Показать порты tcp и udp и их программы:
netstat -nutlp
Показать больше информации о домене:
whois [domain]
Показать DNS информацию о домене:
dig [domain]
Обратный поиск по домену:
dig -x host
Обратный поиск IP-адреса:
dig -x [ip_address]
Поиск IP для домена:
host [domain]
Показать локальный IP-адрес:
hostname -I
Скачать файл из домена с помощью команды wget:
wget [file_name]
Сочетания клавиш Linux
Убить процесс, запущенный в терминале:
Ctrl + C
Остановить текущий процесс:
Ctrl + Z
Вырезать одно слово перед курсором и добавить его в буфер обмена:
Ctrl + W
Вырезать часть строки перед курсором и добавить ее в буфер обмена:
Ctrl + U
Вырезать часть строки после курсора и добавить ее в буфер обмена:
Ctrl + K
Вставить из буфера обмена:
Ctrl + Y
Вызвать последнюю команду, которая соответствует предоставленным символам:
Ctrl + R
Запустите ранее вызванную команду:
Ctrl + O
Выйти из истории команд без выполнения команды:
Ctrl + G
Запустить последнюю команду еще раз:
!!
Выйти из текущей сессии:
exit
Заключение
Чем чаще вы используете команды Linux, тем лучше вы их запомните. Не переживайте о запоминании их синтаксиса - используйте наш шпаргалку.
А больше материалов про Linux можно найти в нашем разделе.