Список SNMP OID и MIB для интерфейсов

Приведу ниже список стандартных OID и MIB с описанием для получения по SNMP различной статистики сетевых интерфейсов коммутаторов, маршрутизаторов, точек доступа, сетевых плат в серверах и т.д.

Читать далее «Список SNMP OID и MIB для интерфейсов»

Как убрать отображение «New User» в CallerID Asterisk

Заметил однажды, что при входящих звонках с Goip4 шлюза на SIP телефонах отображается не только номер звонящего, а и переменно с номером телефона мигает имя «New User», которое явно лишнее и мешает.

После просмотра конфигурационных файлов Asterisk, заметил в файле /etc/asterisk/users.conf в секции general некоторые стандартные значения, а именно:

[general]
fullname = New User

Которые нужно закомментировать:

;fullname = New User

И перезапустить Asterisk чтобы применить изменения:

sudo service asterisk restart

Все, теперь при входящих звонках будет отображаться только номер телефона.

Решение ошибки в Asterisk «File vm-newn does not exist in any format»

При звонке на номер голосовой почты заметил в консоли Asterisk следующие ошибки:

[Apr 10 17:08:01] WARNING[19135][C-00001cf4]: file.c:701 ast_openstream_full: File digits/1n does not exist in any format
[Apr 10 17:08:01] WARNING[19135][C-00001cf4]: file.c:1017 ast_streamfile: Unable to open digits/1n (format (ulaw)): No such file or directory
[Apr 10 17:08:01] WARNING[19135][C-00001cf4]: file.c:701 ast_openstream_full: File vm-newn does not exist in any format
[Apr 10 17:08:01] WARNING[19135][C-00001cf4]: file.c:1017 ast_streamfile: Unable to open vm-newn (format (ulaw)): No such file or directory

Ошибки возникают из-за отсутствия звуковых файлов, например в моем случае в голосовой почте одно сообщение и при попытке сказать «у вас одно(1n.ulaw) новое(vm-newn) сообщение возникает ошибка и ложится трубка.

Архив с набором нужных файлов достаточно просто загрузить с официального сайта http://downloads.asterisk.org/pub/telephony/sounds/releases/ и распаковать в директорию /usr/share/asterisk/sounds
После этого ошибки не должно быть.

Настройка голосовой почты в Asterisk

Для примера настрою голосовую почту для SIP номера 207.
Голосовые сообщения будут отправляться на email с помощью Postfix.
Как его установить я описывал в этой статье — Установка и настройка Postfix.

Для начала укажем в контексте SIP 207 (обычно в файле /etc/asterisk/sip.conf) следующее:

mailbox=207@voicemailcontext

Далее настроим конфигурацию голосовой почты в файле /etc/asterisk/voicemail.conf:

[general]
; формат звуковых файлов
format=wav49|gsm|wav
; от кого слать письма с уведомлениями
serveremail=noreply@example.com
; прикреплять ли к письму аудио файл
attach=yes
; максимальное количество сообщения (стандартно 100, максимум 9999)
maxmsg=100
; максимальное время сообщения в секундах
maxsecs=120
; максимальное время приветствия в секундах
maxgreet=60
; Количество секунд тишины до завершения записи
maxsilence=10
; порог чувствительности к тишине, чем ниже тем чувствительнее, значение от 0 до 256, стандартно 128
silencethreshold=128
; Максимальное число неудачных попыток подключения
maxlogins=3
; Автоматически перемещать прослушиваемые сообщения в папку «Old». По умолчанию включено.
moveheard=yes
; Кодировка сообщений, стандартная ISO-8859-1, с ней у меня часть текста отображалась неверно, поэтому лучше указать UTF-8
charset=UTF-8
; Пропустить строку «[PBX]:» из заголовка сообщения
pbxskip=yes
; Текст строки «От:»
fromstring=VoiceMail
; Тема письма
emailsubject=Новое голосовое сообщение ${VM_MSGNUM} в ящике ${VM_MAILBOX}
; Содержимое письма
emailbody=Уважаемый ${VM_NAME}:\n\n\tВам пришло новое голосовое сообщение длиной ${VM_DUR} под номером (number ${VM_MSGNUM})\nв ящик ${VM_MAILBOX} от ${VM_CALLERID}, в ${VM_DATE}. \n\t
; Формат даты
emaildateformat=%A, %d %B %Y в %H:%M:%S
pagerdateformat=%T %D
; стандартная программа для отправки почты
mailcmd=/usr/sbin/sendmail -t

[zonemessages]
ru=Europe/Moscow|'vm-received' q 'digits/at' H 'hours' M 'minutes'
ua=Europe/Kiev|'vm-received' q 'digits/at' H 'hours' M 'minutes'

; пропишем параметры контекста voicemailcontext, 1111 - пароль голосовой почты(можно не указывать), Username - имя пользователя, test@example.com - на какой адрес слать голосовые сообщения, после запятой можно указать еще один, в конце опции
[voicemailcontext]
207 => 1111,Username,test@example.com,,attach=yes|tz=ua|delete=yes

Кстати если не указать delete=yes, то при достижении лимита maxmsg, автоответчик будет говорить приветствие, а потом текст что голосовой ящик абонента переполнен и не сохранять сообщение, а также не отправлять на email. В этом случае нужно звонить на номер голосовой почты и удалять сообщения. Если указано delete=yes, то сообщения не сохраняются на сервере, не приходят в голосовой ящик, а только отправляются на email, в этом случае лимит maxmsg не действует и переполнение не возможно.

Теперь в конфигурации плана набора /etc/asterisk/extensions.conf в основной контекст добавим номер позвонив на который можно прослушать почту

exten => 500,1,Log(NOTICE, Dialing out from ${CALLERID(all)} to VoiceMail (500))
exten => 500,n,VoiceMailMain(0${CALLERID(num)}@voicemailcontext,s)
exten => 500,n, Hangup

И добавим в контекст набора номера 207 строку VoiceMail (после чего, если номер не отвечает или не в сети, будет срабатывать голосовая почта), например:

[207]
exten => 207,1,Dial(SIP/207,30)
exten => 207,n,Answer
exten => 207,n,VoiceMail(207@voicemailcontext)

Напоследок подключимся к консоли Asterisk, перезагрузим конфигурацию, посмотрим список голосовых ящиков и писем:

asterisk -rvv
sip reload
voicemail reload
dialplan reload
voicemail show users
exit

Записанные сообщения хранятся в директории /var/spool/asterisk/voicemail/
Звуковые файлы хранятся в /usr/share/asterisk/sounds

Смотрите также:
Отправка голосовой почты Asterisk на несколько email
Решение ошибки в Asterisk «File vm-newn does not exist in any format»
Как конвертировать звуковые файлы в ulaw, alaw, gsm, g722 и т.д.

Восстановление GRUB Linux

Обычно на каждом диске есть MBR (главная загрузочная запись, master boot record) и при включении компьютера, BIOS обращается к ней за информацией для дальнейшей загрузки. В Linux системах в качестве загрузчика используется GRUB, о вариантах восстановления которого я и напишу ниже.

Посмотреть версию GRUB можно командой:

grub-install --version

1) Первый вариант.
Запускаем систему с LiveCD/USB, например в образе Ubuntu Desktop кроме установки есть возможность запустить систему.
Откроем терминал, для этого нажмем клавишами Alt+F2 и введем команду:

gnome-terminal

Читать далее «Восстановление GRUB Linux»

nice и ionice. Приоритеты процессов

nice — позволяет указывать приоритет выполнения процессором различных задач, диапазон приоритетов -20 до 19, где 19 наименьший, если не указать, то будет стандартный приоритет 0. Удобен например при упаковке данных в архивы, чтобы эта задача не грузила сервер или когда нужно запустить много процессов, распределив нагрузку, которые занимают все процессорное время.

Пример выполнения команды с самым низким приоритетом:

nice -n 19 КОМАНДА

Посмотреть таблицу процессов и их приоритетов можно так (колонка NI):

ps axl
ps -l

Если таблица большая, можно перенаправить вывод команды в Less и смотреть постранично:

ps axl | less

Чтобы изменить приоритет:

renice -n 19 ПРОЦЕСС(PID)

Проверка значения приоритета по умолчанию (стандартно 0):

nice

ionice — позволяет указать приоритет при операциях ввода/вывода, например чтобы снизить нагрузку на диск. Первым указывается класс от 1 до 3, потом приоритет от 0 до 7, где 7 наименьший.
Классы есть трех видов:
1) Real time — Преимущественный без обращения внимания на другие процессы с указанием приоритетов от 0 до 7.
2) Best Effort — Стандартный с указанием приоритетов от 0 до 7.
3) Idle — При простое без указания приоритетов.

Пример выполнения команды с самым низким приоритетом ввода/вывода:

ionice -c2 -n7 КОМАНДА

Для изменения приоритета:

ionice -c2 -n7 -p ПРОЦЕСС(PID)

Для просмотра установленного приоритета:

ionice -p ПРОЦЕСС(PID)

Можно указать одновременно приоритеты через nice и ionice:

nice -n 19 ionice -c2 -n7 КОМАНДА

Для указания высоких приоритетов например могут понадобится root права, по этому команды нужно выполнять от имени root пользователя либо добавив перед командой sudo.

Отключение шифрования ecryptfs домашнего каталога

Понадобилось однажды отключить шифрование ecryptfs домашнего каталога, которое было когда-то настроено при установке системы.

В первую очередь сделаем копию домашнего каталога нужного пользователя:

sudo cp -rp /home/user /home/user_backup

Получим точку монтирования в каталоге:

PRIVATE=`cat ~/.ecryptfs/Private.mnt 2>/dev/null || echo $HOME/Private`

Отмонтируем каталог:

ecryptfs-umount-private

Установим права на каталог:

chmod 750 $PRIVATE

Удалим каталог и директории ~/.Private, ~/.ecryptfs:

rm -rf $PRIVATE ~/.Private ~/.ecryptfs

А также в сделанной копии, а то ecryptfs-utils может не удалится:

rm -rf /home/user_backup/.Private /home/user_backup/.ecryptfs

Если ecryptfs больше не будет использоваться в системе, то удалим утилиты:

sudo apt-get remove ecryptfs-utils libecryptfs0

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

sudo chmod 750 /home/user
sudo chown user:user -R /home/user

Скопируем из резервной копии домашнего каталога нужные файлы.
Все.

Можно посмотреть встроенную инструкцию командой:

ecryptfs-setup-private --undo

Смотрите также:
Решение ошибки «Could not chdir to home directory /home/user: Permission denied»

Решение ошибки «Could not chdir to home directory /home/user: Permission denied»

Перенес однажды систему на другой диск и при подключении через SSH увидел следующие ошибки:

Читать далее «Решение ошибки «Could not chdir to home directory /home/user: Permission denied»»

Директории с большим количеством файлов

Получилась однажды интересная ситуация, в одной директории оказались миллионы файлов.
Причем часть из них — нужные.

При попытке посмотреть список файлов естественно получится ступор на длительное время.
Как вариант их можно посмотреть через FTP, у которого за частую стандартный лимит на количество отображаемых файлов 10 000, например FTP клиентом FileZilla удобно перемещать файлы по директориям, но этот вариант длительный, из-за того что время еще тратится на FTP запросы, нагрузка на диск при этом низкая.

Если файлы не нужные, их можно удалить командой (с запросом подтверждения на удаление):

rm -r /dir/

Или удалить все без запроса вместе с директорией:

rm -rf /dir/

В моем случае не нужными были мелкие файлы, по этому перейдя в нужную директорию, удалил командой ниже все что меньше указанного размера:

cd /dir/
find -size -2 -type f -print -delete

Перед удалением можно посмотреть количество таких файлов и общее количество, однако это тоже длительные процесс:

find -maxdepth 1 -size -2 -type f -print | wc -l
find -maxdepth 1 -type f -print | wc -l

Если вместо -2 указать 0, то будут удаляться файлы с нулевым размером, то есть пустые.

Если нужно отсортировать файлы по директориям, перейдем в директорию с файлами, создадим нужные директории, например по датам и переместим файлы по шаблону (все у которых название начинается на 2017, -maxdepth 1 указывает что не нужно искать файлы в поддиректориях):

cd /dir/
mkdir 2017
find -maxdepth 1 -type f -name '2017*' -exec mv -vn -t /dir/2017 {} \+

Результат выполнения можно записывать в файл добавив к команде «> файл», например:

find -maxdepth 1 -type f -name '2017*' -exec mv -vn -t /dir/2017 {} \+ > /dir/dir/file.log