Rose debug info
---------------

Exchange, esx, AD, GPO, veeam, adaptec,lsi megaraid

Позднее Ctrl + ↑

Команды для LSI рейд контроллера

Диск исправен — запуск перестроения массива
Если диск исправен, можно попробовать перестроить массив. Для этого находим значения полей Enclosure Device ID и Slot Number у неисправного диска и выполняем для него команду запуска перестроения массива. В примере ниже используются значения 252 и 3:

megacli -PdRbld -Start -PhysDrv[252:3] -a0

Наблюдать за состоянием перестроения массива можно при помощи команды:

# megacli -PdRbld -ShowProg -PhysDrv [252:3] -a0

Диск неисправен — замена диска
Если диск неисправен, его нужно заменить. Помечаем его как отключенный:

# megacli -PdOffline -PhysDrv [252:3] -a0

Затем — как отсутствующий в массиве:

# megacli -PdMarkMissing -PhysDrv [252:3] -a0

И теперь — как подготовленный к удалению из системы:

# megacli -PdPrpRmv -PhysDrv [252:3] -a0

Неисправный диск можно подсветить светодиодом:

# megacli -PdLocate -start -PhysDrv [252:3] -a0

Если индикация не заработала, можно попробовать починить её при помощи следующей команды:

# megacli -AdpSetProp \{UseDiskActivityforLocate -1\} -aALL

Заменяем диск (в случае SAS это можно сделать на горячую, если по светодиодным индикаторам видно, какой из дисков неактивен).

Когда новый диск вставлен, убираем подсветку светодиодом:

# megacli -PdLocate -stop -PhysDrv [252:3] -a0

После замены диска смотрим, каких дисков не хватает в RAID-массиве:

# megacli -PdGetMissing -a0
                                     
    Adapter 0 - Missing Physical drives

    No.   Array   Row   Size Expected
    0     1       1     428199 MB

Exit Code: 0x00

Вставляем новый диск в пустующее место в массиве:

# megacli -PdReplaceMissing -PhysDrv [252:3] -array1 -row1 -a0

Если диск не вставляется и выводится ошибка следующего вида:

Adapter: 0: Failed to replace Missing PD at Array 1, Row 1.

FW error description: 
 The specified device is in a state that doesn't support the requested command.  

Exit Code: 0x32

То можно проверить текущее состояние прошивки диска:

# megacli -PdInfo -PhysDrv [252:3] -a0

Если в строке Firmware state отображается состояние JBOD, то исправить это состояние можно следующим образом:

# megacli -PdMakeGood -PhysDrv[252:3] -Force -a0

Если же в строке Firmware state отображается состояние Unconfigured(good), Spun Up, но в строке Foreign State отображается состояние Foreign, то надо просканировать наличие дисков, переставленных из других RAID-контроллеров и снять у таких дисков отметку о других контроллерах:

# megacli -CfgForeign -Scan -aALL
# megacli -CfgForeign -Сlear -aALL

Включаем новый диск в работу массива:

# megacli -PdRbld -Start -PhysDrv [252:3] -a0

Посмотреть продвижение процесса перестроения можно так:

# megacli -PdRbld -ShowProg -PhysDrv [252:3] -a0
 1050   2021   linux   lsi   raid
 787   2021   hdd   linux   lsi   raid
 749   2021   mikrotik   ospf

Windows 2012 разрешить remoteapp и запретить полноценный rdp

  1. Создать локальную группу TerminalAdmins и добавить в неё пользователей
  2. На диске С создать каталог AdminTools и разместить в нём скрипт NoRDP.cmd
    Содержание скрипта:
@echo OFF
net localgroup TerminalAdmins | find /i "%username%"
if %ERRORLEVEL% == 0 goto admin
logoff.exe
exit
:admin
start /B explorer.exe
exit
  1. В gpedit.msc изменить групповую политику:
    User Configuration -> Administrative Templates -> Windows Components -> Terminal Services -> Policy
    Start a program on connection = Enabled
    Program path and file name = C:\AdminTools\NoRDP.cmd
  2. Выполнить в CMD от имени Администратора: gpupdate /force
    Либо перезагрузить сервер.

Теперь при подключении пользователя по RDP скрипт проверит, входит ли пользователь в группу TerminalAdmins.
Если пользователь в группу не входит, он будет сразу же разлогинен.

 1732   2021   rdp   remoteapp   win2012

Elastix Запрет Межгорода

Самый простой способ как запретить межгород для некоторых номеров

  1. Заходим в управление Elastix через веб, PBX -> Tools — > Asterisk File Editor
  2. Открываем файл extensions_custom.conf
  3. Находим строку [from-internal-custom]
  4. Сразу после неё добавляем: exten =>_8XXXXXXXXXX/1002,1,Playback(followme/sorry) exten =>_8XXXXXXXXXX/1002,2,Hangup()
  5. Это означает что для внутреннего номера 1002 закрыты одинадцатизначные номера начинающиеся на 8.
  6. Вместо followme/sorry можно подствить например restricted или любую другу голосовую фразу.
  7. Если можно без сообщения сразу положить трубку, то вообще вместо двух строк можно обойтись одной: exten =>_8XXXXXXXXXX/1002,1,Hangup()
  8. Не забываем там же нажать Сохранить и Reload Asterisk
 1085   2021   asterisk

Как заменить +7 на 8 для Elastix

У многих записная книжка в телефоне забита в формате +7,  а большинство Российских операторов ip телефонии этот формат не понимают и ждут номера начинающегося на 8.
Это инструкция как автоматически сделать подмену +7 на 8 в Elastix (Asterisk)

 

Для замены +7 на 8 в Elastix необходимо внести изменения в файл extensions_custom.conf. Для этого входим в панель управления Elastix, закладка PBX -> Tools, меню Asterisk File Editor. Листаем и находим необходимый нам файл extensions_custom.conf, и открываем его, нажав левой кнопкой мыши.
Находим в файле строку [from-internal-custom] и сразу после неё добавляем строку:

 

exten => _+7XXXXXXXXXX,1,GoTo(outbound-allroutes,8${EXTEN:2},1)

Нажимаем Save.

Изменения вступят в силу после перезагрузки Астериска. Самый простой способ перезагрузить Астериск закладка PBX -> Tools, меню Asterisk-Cli, в поле Command ввести reload и нажать кнопку Execute. Также можно с консоли или просто перезагрузить компьютер на котором установлен Астериск.


 

Если вы знаете как можно сделать подмену +7 на 8 через Trunk или Outbound Routes — подскажите. Вариант с «8+7|» или «8+.7|» не работают.

В последних версиях Elastix это легко делается для исходящих правил. В prepend пишем +7, а в prefix 8.
Думаю также можно поступить и указав в самом транке.

Вот пример из моего исходящего правила. Заменяем +7 на 8 и добавляем 8 где цифр в номере 10.

Делалось это для корректного отзвона. Просто один оператор у меня показывает номер как +7, а другой вообще без кода страны для Российских номеров.


Итак, как я и обещал, отписываюсь о возможности подмены.
Так как в моём случае нужно было убить сразу 2х зайцев, поэтому у меня и не выходил каменный цветок, а именно:
Есть sip-провайдер (по умолчанию он принимает номера, набранные через +7), нужно на него выход сделать через 9.
Соответственно делал так:
Например мне нужно звонить в город (Москва и мобильные — 11 значные номера), соответственно делал так: в оutbound routes создал роут: prepand (пусто) + prefix (9) | match patern (XXXXXXXXXXX) — здесь очень внимательным нужно быть к количеству иксов! Дело в том, что сначала я думал, что девятку тоже надо обозначать иксом или приписывать перед ними, но такая схема не работала, в итоге я понял, что иксов (или других спецсимволов) должно быть ровно столько, сколько в номере цифр!
Дальше, что касается подмены 8ки на 7ку:
Это я разрулил на сиповском транке вот таким образом prepand (7) + prefix (8) | match patern (.X)
Теперь у меня всё работает!
P.S. В случае, если должна быть обратная замена 7ки на 8ку, то соответственно: prepand (8) + prefix (7) | match patern (.X)
P.S. Если у вас не 7, а +7, то нужно пробовать как и +7 и как 007, потому что некоторые провайдеры и телефонные станции + расценивают как 2 нуля.

 

 1198   2021   asterisk

MySQL error «Can’t create new tempfile» при восстановлении таблицы.

В логах mysql много ошибок подобного рода.
120920  9:25:28 [ERROR] /usr/sbin/mysqld: Table ’./old_sm/phones’ is marked as crashed and last (automatic?) repair failed
Поскольку автоматическое исправление не сработало, то будем исправлять вручную.
Перед любым таким действием настоятельно рекомендуется сделать резервное копирование данных.
Заходим в командную строку mysql.
Запускаем проверку таблицы.

mysql -u root -p stalker_db

mysql> check table phones;
+——————————-+—-+———+—————————————————————+
|           Table                 | Op      | Msg_type | Msg_text                                          |
+——————————-+—-+———+—————————————————————+
|             old_sm.phones | check | warning     | Table is marked as crashed and last repair failed |
|             old_sm.phones | check | error         | Found 6833 keys of 3930951                        |
|             old_sm.phones | check | error         | Corrupt                                           |
+——————————-+—-+———+—————————————————————+
3 rows in set (0.37 sec)

Запускаю восстановление таблицы.

mysql> repair table phones;
+——————————-+——+———+————————————————————-+
|           Table                 | Op        | Msg_type | Msg_text                                                 |
+——————————-+——+———+————————————————————-+
|             old_sm.phones | repair    | error        | Can’t create new tempfile: ’./old_sm/phones.TMD’ |
|             old_sm.phones | repair    | status       | Operation failed                                         |
+——————————-+——+———+————————————————————-+
2 rows in set (0.01 sec)

Т. е. при запущенном mysql-сервере восстановлению не подлежит. Останавливаю mysql
service mysql stop
Запускаю восстановление с помощью myisamchk. Данный метод будем работать с таблицами на движке MyISAM. Если у вас таблицы на движке InnoDB может помочь пересоздание таблицы с заливкой старых данных.
root@112-1:/var/lib/mysql/old_sm# myisamchk -r -f phones.MYI 
— recovering (with sort) MyISAM-table ’phones.MYI’
Data records: 3930951
— Fixing index 1
— Fixing index 2
— Fixing index 3
— Fixing index 4
— Fixing index 5

Запускаю mysql сервер
service mysql start
Ошибка пропала, что и требовалось.

 586   2021   linux   mysql   sql   ubuntu

Elastix запрос ussd баланса

Послать USSD-команду (например, запрос баланса и другие управляющие команды) очень просто. Например, для отправки *923# с модема dongle0 нужно написать такую команду в консоли Asterisk:

pbx*CLI> <b>dongle ussd dongle0 *923#</b>
 443   2021   asterisk

Elastix обработка USSD и SMS и отправка на почту

Добавляем Dilaplan:

[from-gsm]
exten => sms,1,Verbose(Incoming SMS from ${CALLERID(num)} ${SMS})
exten => sms,n,System(/usr/bin/php /etc/asterisk/sms.php ${STRFTIME(${EPOCH},,%Y-%m-%d %H:%M:%S)} — ${DATACARD} — ${CALLERID(num)}: ${SMS_BASE64})
exten => sms,n,Hangup()

exten => ussd,1,Verbose(Incoming USSD: ${USSD})
exten => ussd,n,System(/usr/bin/php /etc/asterisk/ussd.php ${STRFTIME(${EPOCH},,%Y-%m-%d %H:%M:%S)} — ${DATACARD}: ${USSD_BASE64})
exten => ussd,n,Hangup()

exten => s,1,Set(CALLERID(all)=${CALLERID(num)})
exten => s,n,Set(CALLERID(num)=8${CALLERID(num):2})
exten => s,n,goto(from-trunk,${DONGLEIMEI},1)

И два скрипта в систему

sms.php:

<?php

$sms=base64_decode($argv[6]);
//var_dump($argv);
$smsok=$argv[1].» «.$argv[2].» «.$argv[5].» «.$sms;
$smsok = str_replace(’«’, ’’, $smsok);
$smsok = str_replace(„’“, „„, $smsok);
$smsok = preg_replace („/[^а-яА-Я0-9a-zA-z\s\(\)\[\]\-\:\*\.\,\%\$\@\+\-\{\}\?\>\<\#\^\;\=\_\№]/u“,““,$smsok);
$cmd=»echo $smsok | mail -s ’Incoming SMS from $argv[5]’ admin@mail.ru«;
exec($cmd);
$cmd=»echo $smsok >> /var/log/asterisk/sms.txt«;
exec($cmd);
?>

и ussd.php:

<?php
$sms=base64_decode($argv[5]);
var_dump($argv);
$smsok=$argv[1].» «.$argv[2].» «.$sms;
$smsok = str_replace(’«’, ’’, $smsok);
$smsok = str_replace(„’“, „„, $smsok);
$smsok = preg_replace („/[^а-яА-Я0-9a-zA-z\s\(\)\[\]\-\:\*\.\,\%\$\@\+\-\{\}\?\>\<\#\^\;\=\_\№]/u“,““,$smsok);
$cmd=»echo $smsok | mail -s ’Incoming USSD’ admin@mail.ru«;
exec($cmd);
$cmd=»echo $smsok >> /var/log/asterisk/ussd.txt«;
exec($cmd);
?>

Добавляем автопроверку баланса и отправку на почту каждый день в 22-00:

crontab -e

00 22 * * * /usr/sbin/asterisk -rx «dongle ussd dongle0 *105#»

 206   2021   asterisk

Elastix «Шепот» соседа через chanspy

«Шепот» — это когда «Опытный сотрудник» подключается к диалогу «Клиент» — «Молодой сотрудник» и помогает молодому вести диалог. «Опытного», естественно, слышит только молодой — клиенту незачем знать об этом.

На удивление, гугломашина выдала направление «подумать» далеко не на первой ссылке. В сборке с вебмордой FreePBX данный механизм делается внедрением в файл extensions_override_freepbx.conf следующих строк:

[app-chanspy]
exten => 555,1,Macro(user-callerid)
exten => 555,2,Authenticate(1234)
exten => 555,3,Read(SPYNUM,agent-newlocation)
exten => 555,4,ChanSpy(SIP/${SPYNUM},wqv(-1))
;--== end of [app-chanspy] ==--;

Механизм подменяет собой штатный ChanSpy. Пользоваться просто: опытный набирает 555, вводит пароль (1234), вводит внутренний номер «молодого» и включается в разговор.

 426   2021   asterisk
Ранее Ctrl + ↓