понедельник, 3 февраля 2025 г.

Linux После удаления место не освободилось

 
 Такое случается на Linux, только обычно этого не кто не замечает так как файлы обычно малого объема, да и перезагрузка машины решает эту проблему, но когда файл большой (несколько ГБ) и место не освободилось сразу, а еще и перезагрузить нельзя, тогда приходится засучить рукава и разбираться в мат части

df -h

Показало, что мало место, путем поиска du -d1 -h находим источник занятого места. В моем случае это -  kamailio.log

Решение:

# lsof | grep deleted | grep kamailio
rsyslogd    1155                 root    6w      REG              253,4 3040190464      10981 /var/log/kamailio/kamailio.log (deleted)
in:imjour   1155  1172           root    6w      REG              253,4 3040190464      10981 /var/log/kamailio/kamailio.log (deleted)
rs:main     1155  1187           root    6w      REG              253,4 3040190464      10981 /var/log/kamailio/kamailio.log (deleted)

Интересным в этом выводе будет цифра 1155. Ищем ссылку на типа /proc/*наш id*/fd/*ссылка на файл*

# ls -l /proc/1155/fd|grep kamailio
l-wx------ 1 root root 64 Feb  2 11:10 6 -> /var/log/kamailio/kamailio.log (deleted)

Собственно временный файл найден, обнуляем

cat /dev/null > /proc/1155/fd/6

таким образом можно восстановить удаленный файл linux из временного

пятница, 9 августа 2024 г.

Debian 12 sources.list редактирование и уход от cdrom

 

 


 Если после установки постоянно просит диск и ничего с этим не сделать, то идем в сорс-листы и комментим вот такую строчку

 cat /etc/apt/sources.list
#deb cdrom:[Debian GNU/Linux 12.5.0 _Bookworm_ - Official amd64 NETINST with firmware 20240210-11:27]/ bookworm contrib main non-free-firmware

deb http://deb.debian.org/debian/ bookworm main
#non-free-firmware
deb-src http://deb.debian.org/debian/ bookworm main
#non-free-firmware

deb http://security.debian.org/debian-security bookworm-security main
#non-free-firmware
deb-src http://security.debian.org/debian-security bookworm-security main
#non-free-firmware

# bookworm-updates, to get updates before a point release is made;
# see https://www.debian.org/doc/manuals/debian-reference/ch02.en.html#_updates_and_backports
deb http://deb.debian.org/debian/ bookworm-updates main
#non-free-firmware
deb-src http://deb.debian.org/debian/ bookworm-updates main
#non-free-firmware


 Пример из последнего Дебиан 12, но по сути так и в предыдущих версиях...по крайней мере где-то с 8ой

 

 

 

 

 

 

 

четверг, 25 июля 2024 г.

Asterisk 20.8 Unable to load module res_pjsip.so - pjsip_tls_transport_restart

 


 

 

Удивительная проблема в личный опыт

 

 Во-первых зачем оно все нам

Последняя версия научилась делать такое:

;================================TEL URIs=================================
;
; Asterisk has TEL URI support, but with limited scope. Support is only for
; TEL URIs present in traffic from a remote party. Asterisk does not generate
; any TEL URIs of its own.
;
; Currently, the allowed request types are INVITE, ACK, BYE, and CANCEL. Any
; other request type that contains a TEL URI will behave as it did before.
; TEL URIs are allowed in the request, From, and To headers.
;
; You can match a TEL URI From header by IP, header, or auth_username.

 

 Что это вы спросите?

Вот такое Астериск отродясь не мог понять:

INVITE tel:123456789 SIP/2.0


Тип транспорта принципиален и ранее был без выбора фактически(Н.323 уже можно не брать в расчет)

Отбой шел хоть и четырехсотой ошибкой, но интересной:

416 Unsupported URI scheme

Сообщение как бы и намекает что что-то не так в самой схеме URI


Узнал что с 20 версии как раз работает такое! Астериск, ты можешь уже почти все!!!!

С радостью пошел собирать + на последнем Дебиане 12, но в финале было вот такое еще, чего не ожидал


Проблема при сборке астера 20ой версии:

 [asterisk-bugs] [JIRA] (ASTERISK-30296) Undefined symbol on naive RockyLinux 8 system

> Optimizations remove the symbol pjsip_tls_transport_restart with a naive install of Asterisk 20.0.0 on RockyLinux 8.  Turning on DONT_OPTIMIZE resolves the problem.
> ERROR[166734]: loader.c:2513 load_modules: Error loading module 'res_pjsip.so': /usr/lib64/asterisk/modules/res_pjsip.so: undefined symbol: pjsip_tls_transport_restart
> # strings main/libasteriskpj.so.2 |grep transport_restart
> pjsip_tcp_transport_restart

Как оказалось проблема не нова, хотя сам не мог долго понять почему такой отказ идет.

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


CLI> module load res_pjsip.so
Unable to load module res_pjsip.so
Command 'module load res_pjsip.so ' failed.
[2024-06-21 14:24:14] ERROR[1358]: loader.c:283 module_load_error: Error loading module 'res_pjsip.so': /usr/lib/asterisk/modules/res_pjsip.so: undefined symbol: pjsip_tls_transport_restart


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


Вывод лога не форматированный, обращаем внимание

жалоба на сам драйвер, не работает не какой-либо один из суб модулей, а все, что говорит об неисправности самого pjsip-драйвера:

ERROR[1934850]: loader.c:2678 load_modules: Error loading module 'chan_pjsip.so': /usr/lib/asterisk/modules/chan_pjsip.so: undefined symbol:>
 ERROR[1934850]: loader.c:2678 load_modules: Error loading module 'func_pjsip_endpoint.so', missing dependency: res_pjsip
 ERROR[1934850]: loader.c:2678 load_modules: Error loading module 'res_pjsip_acl.so', missing dependency: res_pjsip
 ERROR[1934850]: loader.c:2678 load_modules: Error loading module 'res_pjsip_authenticator_digest.so', missing dependency: res_pjsip
 ERROR[1934850]: loader.c:2678 load_modules: Error loading module 'res_pjsip_caller_id.so', missing dependencies: res_pjsip, res_pjsip_session
 ERROR[1934850]: loader.c:2678 load_modules: Error loading module 'res_pjsip_dialog_info_body_generator.so', missing dependencies: res_pjsip,>
 ERROR[1934850]: loader.c:2678 load_modules: Error loading module 'res_pjsip_diversion.so', missing dependencies: res_pjsip, res_pjsip_session
 ERROR[1934850]: loader.c:2678 load_modules: Error loading module 'res_pjsip_dtmf_info.so', missing dependencies: res_pjsip, res_pjsip_session
 ERROR[1934850]: loader.c:2678 load_modules: Error loading module 'res_pjsip_endpoint_identifier_anonymous.so', missing dependency: res_pjsip
 ERROR[1934850]: loader.c:2678 load_modules: Error loading module 'res_pjsip_endpoint_identifier_ip.so', missing dependency: res_pjsip
 ERROR[1934850]: loader.c:2678 load_modules: Error loading module 'res_pjsip_endpoint_identifier_user.so', missing dependency: res_pjsip
 ERROR[1934850]: loader.c:2678 load_modules: Error loading module 'res_pjsip_exten_state.so', missing dependencies: res_pjsip, res_pjsip_pubs>
 ERROR[1934850]: loader.c:2678 load_modules: Error loading module 'res_pjsip_header_funcs.so', missing dependencies: res_pjsip, res_pjsip_ses>
 ERROR[1934850]: loader.c:2678 load_modules: Error loading module 'res_pjsip_logger.so', missing dependency: res_pjsip
 ERROR[1934850]: loader.c:2678 load_modules: Error loading module 'res_pjsip_messaging.so', missing dependencies: res_pjsip, res_pjsip_session
 ERROR[1934850]: loader.c:2678 load_modules: Error loading module 'res_pjsip_mwi_body_generator.so', missing dependencies: res_pjsip, res_pjs>
 ERROR[1934850]: loader.c:2678 load_modules: Error loading module 'res_pjsip_mwi.so', missing dependencies: res_pjsip, res_pjsip_pubsub
 ERROR[1934850]: loader.c:2678 load_modules: Error loading module 'res_pjsip_nat.so', missing dependencies: res_pjsip, res_pjsip_session
 ERROR[1934850]: loader.c:2678 load_modules: Error loading module 'res_pjsip_notify.so', missing dependency: res_pjsip
 ERROR[1934850]: loader.c:2678 load_modules: Error loading module 'res_pjsip_one_touch_record_info.so', missing dependencies: res_pjsip, res_>
 ERROR[1934850]: loader.c:2678 load_modules: Error loading module 'res_pjsip_outbound_authenticator_digest.so', missing dependency: res_pjsip
 ERROR[1934850]: loader.c:2678 load_modules: Error loading module 'res_pjsip_outbound_publish.so', missing dependency: res_pjsip
 ERROR[1934850]: loader.c:2678 load_modules: Error loading module 'res_pjsip_outbound_registration.so', missing dependency: res_pjsip
 ERROR[1934850]: loader.c:2678 load_modules: Error loading module 'res_pjsip_path.so', missing dependencies: res_pjsip, res_pjsip_session
 ERROR[1934850]: loader.c:2678 load_modules: Error loading module 'res_pjsip_pidf_body_generator.so', missing dependencies: res_pjsip, res_pj>
 ERROR[1934850]: loader.c:2678 load_modules: Error loading module 'res_pjsip_pidf_digium_body_supplement.so', missing dependencies: res_pjsip>
 ERROR[1934850]: loader.c:2678 load_modules: Error loading module 'res_pjsip_pidf_eyebeam_body_supplement.so', missing dependencies: res_pjsi>
 ERROR[1934850]: loader.c:2678 load_modules: Error loading module 'res_pjsip_publish_asterisk.so', missing dependencies: res_pjsip, res_pjsip>
 ERROR[1934850]: loader.c:2678 load_modules: Error loading module 'res_pjsip_pubsub.so', missing dependency: res_pjsip
 ERROR[1934850]: loader.c:2678 load_modules: Error loading module 'res_pjsip_refer.so', missing dependencies: res_pjsip, res_pjsip_session, r>
 ERROR[1934850]: loader.c:2678 load_modules: Error loading module 'res_pjsip_registrar.so', missing dependency: res_pjsip
 ERROR[1934850]: loader.c:2678 load_modules: Error loading module 'res_pjsip_rfc3326.so', missing dependencies: res_pjsip, res_pjsip_session
 ERROR[1934850]: loader.c:2678 load_modules: Error loading module 'res_pjsip_sdp_rtp.so': /usr/lib/asterisk/modules/res_pjsip_sdp_rtp.so: und>
 ERROR[1934850]: loader.c:2678 load_modules: Error loading module 'res_pjsip_send_to_voicemail.so', missing dependencies: res_pjsip, res_pjsi>
 ERROR[1934850]: loader.c:2678 load_modules: Error loading module 'res_pjsip_session.so': /usr/lib/asterisk/modules/res_pjsip_session.so: und>
 ERROR[1934850]: loader.c:2678 load_modules: Error loading module 'res_pjsip.so': /usr/lib/asterisk/modules/res_pjsip.so: undefined symbol: p>
 ERROR[1934850]: loader.c:2678 load_modules: Error loading module 'res_pjsip_t38.so', missing dependencies: res_pjsip, res_pjsip_session
 ERROR[1934850]: loader.c:2678 load_modules: Error loading module 'res_pjsip_transport_websocket.so', missing dependency: res_pjsip
 ERROR[1934850]: loader.c:2678 load_modules: Error loading module 'res_pjsip_xpidf_body_generator.so', missing dependencies: res_pjsip, res_p>
 Asterisk Ready.


Первый опыт изменения таких настроек

Обычно собирал не самые последние версии тк вопрос был не принципиален, а сейчас все приходится быть на острие не только прогресса, но и версионности ПО

Шикарный кейс

На памятку поисковый запрос удобнее по 

undefined symbol: pjsip_tls_transport_restart site:lists.digium.com




четверг, 5 октября 2023 г.

Linux/UNIX: unixtimestamp - что заперевод, где играет и какая его роль?

 

     Сейчас, когда пишу, время у меня 1659086347 или

 Fri Jul 29 2022 12:19:07 GMT+0300 (Москва, стандартное время)

 Забегая вперед, спойлер, мы живем в 165ую эпоху))



Перевод и проверку времени делаем, к примеру на: https://www.unixtimestamp.com/

как бы первоисточник.

Что это вообще такое?

Сама ВИКИ определяет это понятие как: 

"Unix-время (англ. Unix time, также POSIX-время) — система описания моментов во времени, принятая в Unix и других POSIX-совместимых операционных системах. 

Определяется как количество секунд, прошедших с полуночи (00:00:00 UTC) 1 января 1970 года (четверг); этот момент называют «эпохой Unix». "

 Такую целочисленную системутрадиционно и удобно использовать для сравнения и хранения дат

Выравнивание отсчета, логирования журналов и т п.

Одно из возможно для некоторых менее явное применение - оптимизация кода.

 

 if($conn){
//$i=0;
//$utimestamp = microtime(true);

foreach ($ArData as $ArVars) {
    //echo "$ArVars\n";

    //echo $i++."\n";
    //var_dump($ArData);
    $src=$ArVars['src'];
    $attempts=$ArVars['attempts'];
    //print('src='.$src.' attempts='.$attempts."\n");
    //$ArData[] = $vars;
    $sql_spam = "INSERT INTO spam (src, attempts) VALUES ($src, $attempts)";
    $result = mysqli_query($conn, $sql_spam);
    //$result = mysqli_query($conn, "INSERT INTO spam (src, attempts) VALUES ($src, $attempts)");
    //print("INSERT INTO spam (src, attempts) VALUES ($src, $attempts)\n");
    //echo "Данные успешно добавлены\n";
    //print($result."\n");
    //var_dump((string)$result);
            }
        }
else{
    echo "Ошибка: " . $conn->error;
    }


//$milliseconds = round((microtime(true)- $utimestamp ), 9);
//print($milliseconds."\n");

 Красным выделил самый простой счетчик по измерению времени выполнения кода.

Подобные конструкции мы используем постоянно, и главное удобно для операций с/над временем.

 

 

 

 

воскресенье, 16 апреля 2023 г.

Asterisk Function SIP_HEADERS & SIP_HEADER Разница 16 и 20

 

 


 Функция SIP_HEADER() была Asterisk 16

Используется для получения или установки значения заданного заголовка SIP сообщения.

А вот в 20ом появилась новая, но очень похожая, на столько похожая что по запросу в поисковике, яндекс подменяет на выше названную. Что интересно, Гугл такого не делает.

Давайте взглянем на синаксис

SIP_HEADER(name[,number])


 В принципе мог и не напоминать, все можно посмотреть по

CLI> core show function {ИМЯФУНКЦИИ}

 Смотрите на новинку:

 Function_SIP_HEADERS

Возвращает разделенный запятыми список имен заголовков (без значений) из
сообщения INVITE, отправившего текущий канал.

Идея логировать названия всех пользовательских заголовков которые пришли о вышестоящей АТС

SIP_HEADERS(prefix)
 

На пальцах, встраиваем в диалплан и когда приходит инвайт, получаем список всех заголовков которые может обрабатывать присоединенная станция.

Функция специфическая, кто-то может сказать, что не нужная, но нет,  это крайне тонуий инструмент, нужный для специфических задач.

Каких?

Расскажу далее

четверг, 14 апреля 2022 г.

Поддерживает ли мой браузер нужный формат?

 

 


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

https://caniuse.com/?search=mp4 

По факту у меня во всех поддерживается, но было интересно посмотреть и другие форматы

среда, 29 сентября 2021 г.

AVAYA: попытка скачивания файлов приветствия

 

    Появилась задача достать аудио сообщения с АТС Авайя на одной из станций.

    Avaya TN750C - Печатная плата сообщения записывает и сохраняет сообщения, которые могут быть воспроизведены по требованию в качестве части функции обслуживания вызовов. При оснащении системы 10-ю печатными платами общая обслуживающая способность составит 42,6 мин (при 32 кбит/с) и 160 портов. Иными словами, одновременно могут воспроизводиться 160 сообщений. Скорость уплотнения 16 кбит/с (достаточная для извещения абонента с векторным добавочным номером о месте исходящего вызова) обеспечивает общую обслуживающую способность 85,3 мин.

   Для начала запустил FTP через WEB-интерфейс станции

    Вкл еще в самом СМ, надо указать на/с какой платы юудем заливать/качать файлы:


Вот тут-то  я и встрял на долго

 

Все есть, и C-Lan, Med-Pro, IPSI, даже платы голосовой почты и как раз анонсмент тоже есть, но что-то все равно ей не нравися.

Начал думать что уже не работает, но нет:


Тесты успешны, да и на вх связь никто не жалуется, а спустя некоторое время обнаруживается это:


    Стара оказалась плата, а все главное в работе и активно ведь пашет на узле, завидное качество, недоступное многим сейчас)






 

 

 

 

 

Linux После удаления место не освободилось

   Такое случается на Linux, только обычно этого не кто не замечает так как файлы обычно малого объема, да и перезагрузка машины решает эту ...