По вашему запросу ничего не найдено :(
Убедитесь, что запрос написан правильно, или посмотрите другие
наши статьи:
Одной из основных составляющих IP – PBX на базе Asterisk являются SIP – транки в сторону провайдера и оконечные телефонные аппараты, или как их принято называть «пиры» (peers). Сегодня мы расскажем о способе автоматизации мониторинга состояния транков и пиров, с отправлением на почту системного администратора.
Мониторинг пиров
Итак, начнем с мониторинга состояния пиров. Для этого мы напишем небольшой bash – скрипт. Предположим, что у нас есть 3 площадки, А, B и C. АТС Asterisk находится на площадке A. Предварительно, перед началом работы, создадим 2 файлы: первый – для логов нашего скрипта, а второй, будет служебным, и будет использоваться только в рамках исполнения скрипта. Внутри каждого скрипта, мы будем писать комментарии к каждой из его строк.
Скачать скрипт мониторинга пиров вы можете по ссылке ниже:
Скачать скрипт мониторинга пиров
[root@asteriskpbx]# touch /home/admin/log_mail.txt
[root@asteriskpbx]# touch /home/admin/message.txt
Далее, создаем переменные для нашего скрипта:
#!/bin/sh
LOGSIZE=`ls -l /home/admin/log_mail.txt | awk '{ print $5 }'` //проверяем размер файла с логами
problempeers=`/usr/sbin/asterisk -rx 'sip show peers' | grep UNKNOWN` //выводим командой 'sip show peers' через консоль Asterisk, и затем, с помощью команды grep UNKNOWN фильтруем пиры, чтобы отобразить только те, состояние которых является UNKNOWN
GWB=`ping -c4 11.22.33.44 | grep 'received' | awk -F',' '{ print $2}' | awk '{ print $1}'` //по протоколу ICMP, пингуем IP – адрес шлюза на удаленной площадке четырьмя пакетами. Если все ОК, и шлюз доступен, до значение переменной будет равно 4. В противном случае, оно будет равно 0.
GWC=`ping -c4 44.33.22.11 | grep 'received' | awk -F',' '{ print $2}' | awk '{ print $1}'` //аналогичным образом пингуем шлюз на площадке C
ResultB="" //служебная переменная
ResultC="" //служебная переменная
FILENAME=/home/admin/message.txt //записываем в переменную путь к лог- файлам
LOGFILE=/home/admin/log_mail.txt
DATE="`date +%d.%m.%Y" "%H:%M:%S`" //выводим текущую дату и время в формате дд.мм.гггг чч:мм:сс
echo "$problempeers" > /home/admin/message.txt //записываем содержимое переменной problempeers в служебный файл. В этой переменной содержится результат вывода команды по статусу пиров.
FILESIZE=$(stat -c%s "$FILENAME") //проверяем размер служебного файла message.txt. Если в нем есть какая-либо информация, значит есть проблемы с пирами (имеются в статусе UNKNOWN), если он пустой, то все ОК.
На этом этапе, мы сформировали все необходимые переменные и у нас имеются все необходимые для формирования письма (если надо) на email системному администратору. Перейдем к исполнительной части скрипта:
if [ $GWB -eq 0 ]; then //если число ответов шлюза на площадке B на пинг равно 0, то запускаем процесс формирования письма
ResultB ="на площадке B НЕ ДОСТУПЕН!" //формируем часть текста. Мы ее включим в заголовок письма
else
ResultB ="" //если все таки шлюз ответил на пинг, то оставляем переменную пустой
fi
if [ $GWС -eq 0 ]; then //если число ответов шлюза на площадке С на пинг равно 0, то запускаем процесс формирования письма
ResultС="на площадке С НЕ ДОСТУПЕН!" //по аналогии. Указываем в заголовок, что роутер C недоступен
else
ResultС ="" //если все ОК, то оставляем переменную пустой
fi
if [ $FILESIZE -ne 1 ]; then //если наш служебный файл message.txt не пустой, то проверяем следующее условие
if [ $GWB -eq 0 ] || [ $GWC -eq 0 ]; then //если хотябы один из роутеров недоступен по пинг, то переходим к следующему пункту скрипта
echo "$problempeers"| mailx -s "Проблемы с SIP пирами | Роутер $ResultB $ResultC!" -r "info@merionet.ru" youremail@some.ru </home/admin/message.txt && //отправляем на почту письмо, где указываем, что у нас есть проблемы с пирами, и, если какой-то из роутеров не доступен, указываем это. В теле письма мы отправляем вывод недоступных пиров.
echo "FAIL :: $DATE :: Some problems with phones" >> "$LOGFILE" //параллельно с отправкой письма, записываем в лог файл запись, что у нас есть проблемы с пирами (в вывод так же можно добавить с какими именно)
else
echo "$problempeers"| mailx -s "Проблемы с SIP пирами | Роутеры ДОСТУПНЫ!" -r "info@merionet.ru" youremail@some.ru < /home/admin/message.txt && //если оба наших роутера доступны, то мы просто формируем письмо, в котором указываем перечень недоступных пиров.
echo "FAIL :: $DATE :: Some problems with phones" >> "$LOGFILE" //аналогично вносим запись в лог – файл.
fi
else
echo "OK :: $DATE :: all phones are OK" >> "$LOGFILE" //если служебный файл пустой, то мы вносим запись в лог – файл что все хорошо и проверка успешно прошла.
fi
if [ $LOGSIZE -ge 150000 ]; then //елси размер нашего лог – файла больше или равен 150 КБ, то мы очищаем этого (можете подкрутить эту величину, как вам угодно.)
cat /dev/null > /home/admin/log_mail.txt
fi
cat /dev/null > /home/admin/message.txt //на выходе чисти служебный файл message.txt, для последующего использования
Теперь давайте проверим, что приходит нам на почту в случае, если несколько пиров стали недоступны, но все роутеры доступны:
Мониторинг транков
Отлично, перейдем к формированию скрипта по мониторингу транков. Здесь все несколько проще, и мы просто будем сравнивать общее количество транков, и количество зарегистрированных транков:
Скачать сам скрипт можете ниже:
Скачать скрипт мониторинга транков
#!/bin/bash
ALLTRUNKSMINIMUM="`/usr/sbin/asterisk -rx "sip show registry"`" //выводим регистрации по протоколу SIP
ALLTRUNKS=`echo "$ALLTRUNKSMINIMUM" |grep "SIP registrations" |awk '{print $1}'` //численное обозначение всех имеющихся транков
REGTRUNKS=`/usr/sbin/asterisk -rx "sip show registry" |grep Registered |wc -l` //численное обозначение всех зарегистрированных транков
DATE="`date +%d.%m.%Y" "%H:%M:%S`" //формируем текущую дату, для логов
LOGFILE=/home/admin/log_mail.txt //для лог – файла, указываем тот же файл, что и для скрипта по мониторингу пиров
if [ "$REGTRUNKS" -lt "$ALLTRUNKS" ]; then //если число зарегистрированных транков меньше чем число всех транков
sleep 5 //ждем 5 секунд
echo `/usr/sbin/asterisk -rx "sip reload"` \ перезагружаем модуль SIP, в целях перерегистрации. Эта команда автоматически перерегистрирует транк на оборудовании провайдера, после чего, он, зачастую, начинает работать.
sleep 5 //ждем еще 5 секунд
VAR=`/usr/sbin/asterisk -rx "sip show registry"` //после перезагрузки SIP модуля, снова смотрим SIP –регистрации. Если данная команда не дала своих результатов, то в переменной VAR будет записаны не работающие транки. Если она помогла, то на email админу придет рабочий вывод всех зарегистрированных транков. Это весьма удобно.
echo "$VAR"| mailx -s "Мониторинг транков" -r "info@merionet.ru" youremail@some.ru // отправляем письмо на почту системного администратора, с выводом SIP регистраций после перезагрузки модуля
else
echo "OK :: $DATE :: all trunks are OK" >> "$LOGFILE" //если число зарегистрированных транков, равно общему числу, то записываем в лога файл соответствующую запись.
fi
Теперь, когда мы автоматизировали процессы мониторинга состояния на Asterisk, сделаем выполнение этих скриптов регулярным. Сохраним наши скрипты в формате .sh, можно сделать это, например, в Notepad ++. Сделаем выполнение мониторинг транков раз в 2 минуты, а выполнение мониторинга пиров раз в 10 минут. Перед загрузкой скриптов на сервер, дадим им необходимые права и, что очень важно, преобразуем скрипт в Linux формат:
[root@asteriskpbx]# dos2unix peer.sh //преобразуем скрипт для мониторинга пиров
[root@asteriskpbx]# dos2unix trunk.sh //преобразуем скрипт для мониторинга транков
[root@asteriskpbx]# chmod 777 peer.sh //дадим необходимые права обоим скриптам
[root@asteriskpbx]# chmod 777 trunk.sh
[root@asteriskpbx]# crontab -e
В открывшемся cron, задаем задачи для выполнения наших скриптов:
*/10 * * * * /bin/bash /home/peer.sh >/dev/null //исполнять файл раз в 10 минут
*/2 * * * * /bin/bash /home/trunk.sh >/dev/null //исполнять файл раз в 2 минуты
Вот и все. Теперь мы имеет достаточно простой, но порой очень нужный и эффективный мониторинг состояния транков и пиров на нашем Asterisk
В данной статье мы рассмотрим VoIP шлюз Yeastar Neogate TA800, произведем его анпакинг и настроим его для работы с Asterisk. Поехали!
Yeastar Neogate TA800 - это 8-портовый FXS шлюз, поддерживающий протоколы SIP и IAX2. В качестве транспортных протоколов могут использоваться TCP, UDP, TLS и SRTP. Также имеется поддержка факса по стандартам T.38 и G.711. С помощью данного шлюза можно подключить имеющиеся аналоговые телефонные аппараты к IP-АТС или провайдеру облачной IP-телефонии.
$dbName_ecom = "to-www_ecom";
$GoodID = "4102403443";
mysql_connect($hostname,$username,$password) OR DIE("Не могу создать соединение ");
mysql_select_db($dbName_ecom) or die(mysql_error());
$query_ecom = "SELECT `model`, `itemimage1`, `price`, `discount`, `url`, `preview115`, `vendor`, `vendorCode` FROM `items` WHERE itemid = '$GoodID';";
$res_ecom=mysql_query($query_ecom) or die(mysql_error());
$row_ecom = mysql_fetch_array($res_ecom);
echo 'Кстати, купить '.$row_ecom['vendor'].' '.$row_ecom['vendorCode'].' можно в нашем магазине Merion Shop по ссылке ниже. С настройкой поможем 🔧
Купить '.$row_ecom['model'].''.number_format(intval($row_ecom['price']) * (1 - (intval($row_ecom['discount'])) / 100), 0, ',', ' ').' ₽';
$dbName = "to-www_02";
mysql_connect($hostname,$username,$password) OR DIE("Не могу создать соединение ");
mysql_select_db($dbName) or die(mysql_error());
Распаковка и внешний вид устройства
Шлюз поставляется в фирменной коробке от производителя. В комплект поставки входит:
Cам шлюз Yeastar TA800
Подставка
Блок питания на 12 Вольт
Руководство пользователя
Инструкция по установке
На передней части корпуса шлюза расположились индикаторы:
PWR - индикатор питания;
RUN - индикатор состояния устройства;
LAN - индикатор подключения к локальной сети;
WAN - индикатор подключения к WAN (зарезервировано);
FXS PORT - статус FXS порта (1-8);
На задней части корпуса шлюза расположились:
Порт для подключения блока питания;
Кнопка сброса к заводским настройкам RESET;
LAN порт для подключения к локальной сети (RJ-45);
WAN порт (зарезервирован);
8 FXS портов для подключения аналоговых телефонных аппаратов или факса (RJ-11);
FXS PORT - статус FXS порта (1-8);
Подключение и настройка для работы с Asterisk
Для того, чтобы подготовить устройство к дальнейшей настройке, необходимо выполнить следующие шаги:
Подключить устройство к сети электропитания через блок;
Подключить устройство к локальной сети через LAN порт;
Подключить аналоговый телефонный аппарат к одному из FXS портов шлюза;
Подняв трубку на телефонном аппарате мы должны услышать зуммер, далее необходимо зайти в голосовое меню, для этого наберите ***;
Нам нужно выяснить IP-адрес устройства, для этого, находясь в голосовом меню – нажмите 1 - Вам продиктуют IP адрес;
Полученный IP адрес введите в адресную строку Вашего браузера. Перед Вами откроется web-интерфейс устройства. Данные для входа по умолчанию - admin/password
Важно! По умолчанию, устройство получает IP адрес по DHCP. Если в вашей сети не используется DHCP, то возможно понадобится подключиться к шлюзу напрямую и настроить на нём необходимый IP адрес. Узнать текущий IP адрес можно также через голосовое меню.
Далее необходимо перейти на вкладку System→ LAN Settings и настроить устройству статический IP адрес
Далее переходим на вкладку Gateway → VoIP Server Settings:
И записываем в него данные для подключения к серверу IP-АТС Asterisk (В нашем случае 192.168.1.150 – это IP адрес Asterisk.)
Далее переходим на вкладку Port List:
И отредактируем параметры портов для подключения к серверу IP-АТС. Необходимо внести сюда данные внутренних номеров (Extensions), настроенных на нашей IP-АТС. (В нашем случае это номер 1012), в поле Primary Server выбрать учетную запись сервера, которую мы создали в предыдущем шаге.
Остальные порты настраиваем аналогично. Жмём кнопку Save и готово. Теперь можно звонить с аналогового телефона, подключенного к порту шлюза через IP-АТС Asterisk. Проверить статус подключения портов, можно во вкладке Status
Virtual Network Computing (VNC) - это графическая система общего доступа к рабочему столу, которая позволяет использовать клавиатуру и мышь для удаленного управления другим компьютером.
В этой статье описываются шаги по установке и настройке VNC-сервера в CentOS 8. Мы также покажем, как безопасно подключаться к VNC-серверу через туннель SSH.
Подготовка
Чтобы следовать этому руководству, вам необходимо войти в систему как пользователь с привилегиями sudo на удаленном компьютере CentOS.
Установка окружения рабочего стола
Как правило, на серверах не установлена среда рабочего стола. Если машина, к которой вы хотите подключиться, не имеет графического интерфейса, сначала установите ее. В противном случае пропустите этот шаг.
Выполните следующую команду, чтобы установить Gnome, среду рабочего стола по умолчанию в CentOS 8 на удаленной машине:
sudo dnf groupinstall "Server with GUI"
В зависимости от вашей системы загрузка и установка пакетов и зависимостей Gnome может занять некоторое время.
Установка VNC-сервера
В качестве сервера мы будем использовать TigerVNC - активно поддерживаемый высокопроизводительный VNC-сервер с открытым исходным кодом. Он доступен в репозиториях CentOS по умолчанию, для его установки введите:
sudo dnf install tigervnc-server
После установки VNC-сервера выполните команду vncserver, чтобы создать начальную конфигурацию и установить пароль. Не используйте sudo при выполнении следующей команды:
vncserver
Вам будет предложено ввести и подтвердить пароль и указать, следует ли устанавливать его в качестве пароля только для просмотра (view-only). Если вы решите установить пароль только для просмотра, пользователь не сможет взаимодействовать с экземпляром VNC с помощью мыши и клавиатуры.
You will require a password to access your desktops.
Password:
Verify:
Would you like to enter a view-only password (y/n)? n
/usr/bin/xauth: file /home/linuxize/.Xauthority does not exist
New 'server2.linuxize.com:1 (linuxize)' desktop at :1 on machine server2.linuxize.com
Starting applications specified in /etc/X11/Xvnc-session
Log file is /home/linuxize/.vnc/server2.linuxize.com:1.log
При первом запуске команды vncserver она создаст и сохранит файл паролей в каталоге ~/.vnc, который будет создан, если его не будет.
Обратите внимание, что : 1 после имени хоста в выводе выше. Это указывает номер порта дисплея, на котором работает сервер VNC. В нашем случае сервер работает по TCP-порту 5901 (5900 + 1) . Если вы создадите второй экземпляр, он будет работать на следующем свободном порту, то есть : 2, что означает, что сервер работает на порту 5902 (5900 + 2) .
Важно помнить, что при работе с серверами VNC: X - это порт дисплея, который относится к 5900 + X.
Прежде чем перейти к следующему шагу, сначала остановите экземпляр VNC, используя команду vncserver с параметром -kill и номером сервера в качестве аргумента. В нашем случае сервер работает в порту 5901 (: 1), поэтому, чтобы остановить его, запустите:
vncserver -kill :1
Мы получим такой вывод:
Killing Xvnc process ID 19681
Настройка VNC-сервера
Теперь, когда и Gnome, и TigerVNC установлены на удаленной машине CentOS, следующим шагом является настройка TigerVNC для использования Gnome. Сервер VNC использует файл ~/.vnc/xstartup для запуска приложений при создании нового рабочего стола. Откройте файл:
vim ~/.vnc/xstartup
И отредактируйте его следующим образом:
#!/bin/sh
[ -x /etc/vnc/xstartup ] && exec /etc/vnc/xstartup
[ -r $HOME/.Xresources ] && xrdb $HOME/.Xresources
vncconfig -iconic &
dbus-launch --exit-with-session gnome-session &
Сохраните и закройте файл (напоминаем, что в vim для этого нужно ввести :wq). Приведенный выше скрипт автоматически выполняется при каждом запуске или перезапуске сервера TigerVNC.
Если вы хотите передать дополнительные параметры серверу VNC, откройте файл ~/.vnc/config и добавьте один параметр в каждой строке. Наиболее распространенные параметры перечислены в файле. Раскомментируйте и измените по своему вкусу. Вот пример:
# securitytypes=vncauth,tlsvnc
# desktop=sandbox
geometry=1920x1080
# localhost
# alwaysshared
Создание файла модуля Systemd
Файлы модулей позволяют легко запускать, останавливать и перезапускать службы. Как правило, лучшим местом для хранения файлов пользовательских модулей является ~/.config/systemd/user. Создайте каталог при помощи команды mkdir:
mkdir -p ~/.config/systemd/user
Скопируйте дефолтный файл модуля vncserver:
cp /usr/lib/systemd/user/vncserver@.service ~/.config/systemd/user/
Сообщите systemd, что существует новый файл пользовательского модуля:
systemctl --user daemon-reload
Запустите службу VNC и включите ее при загрузке:
systemctl --user enable vncserver@:1.service --now
Число 1 после @: определяет порт дисплея, который будет прослушивать служба VNC. Мы используем 1, что означает, что VNC-сервер будет прослушивать порт 5901, как мы обсуждали ранее.
Включите задержку, чтобы служба пользователя запускалась при загрузке и продолжала работать, когда пользователь не в системе:
loginctl enable-linger
Убедитесь, что служба успешно запущена:
systemctl --user status vncserver@:1.service
Получим такой вывод:
? vncserver@:1.service - Remote desktop service (VNC)
Loaded: loaded (/home/linuxize/.config/systemd/user/vncserver@.service; enabled; vendor preset: enabled)
Active: active (running) since Thu 2020-01-30 22:14:08 UTC; 2s ago
Process: 20813 ExecStart=/usr/bin/vncserver :1 (code=exited, status=0/SUCCESS)
Process: 20807 ExecStartPre=/bin/sh -c /usr/bin/vncserver -kill :1 > /dev/null 2>&1 || : (code=exited, status=0/SUCCESS)
CGroup: /user.slice/user-1000.slice/user@1000.service/vncserver.slice/vncserver@:1.service
...
Подключение к серверу VNC
VNC не является зашифрованным протоколом и может подвергаться перехвату пакетов. Рекомендуемый подход заключается в создании туннеля SSH для безопасной пересылки трафика с локального компьютера через порт 5901 на удаленный сервер с тем же портом.
Настройка SSH-туннелирования в Linux и macOS
Если вы используете Linux, macOS или любую другую операционную систему на основе Unix на своем компьютере, вы можете легко создать туннель с помощью следующей команды ssh:
ssh -L 5901:127.0.0.1:5901 -N -f -l username remote_server_ip
Вам будет предложено ввести пароль пользователя. Замените username и remote_server_ip своим именем пользователя и IP-адресом вашего сервера.
Настройка SSH-туннелирования в Windows
Пользователи Windows могут настроить SSH-туннелирование с помощью PuTTY.
Откройте Putty и введите IP-адрес вашего сервера в поле Host name or IP address.
В меню «Connection» разверните пункт «SSH» и выберите «Tunnels» . Введите порт VNC-сервера 5901 в поле Source Port, введите адрес_сервера: 5901 в поле Destination и нажмите кнопку Add.
Вернитесь на страницу ”Session”, чтобы сохранить настройки, чтобы вам не приходилось каждый раз вводить их. Чтобы войти на удаленный сервер, выберите сохраненный сеанс и нажмите кнопку «Open» .
Подключение с помощью Vncviewer
Чтобы подключиться к удаленному Серверу, откройте программу просмотра VNC и введите localhost: 5901.
Вы можете использовать любую программу просмотра VNC, такую как TigerVNC, TightVNC, RealVNC, UltraVNC Vinagre и VNC Viewer для Google Chrome.
Мы будем использовать TigerVNC:
При появлении запроса введите пароль, и вы увидите рабочий стол Gnome по умолчанию. Это должно выглядеть примерно так:
Готово! Теперь вы можете начать работу на удаленном рабочем столе с локального компьютера, используя клавиатуру и мышь.
Итоги
Мы показали вам, как настроить VNC-сервер и подключиться к удаленной машине CentOS 8.
Чтобы запустить отображение для более чем одного пользователя, повторите те же шаги. Создайте исходную конфигурацию, установите пароль с помощью команды vncserver и создайте новый файл службы, используя другой порт.