Рубрика «linux» - 225

Доброго времени суток уважаемые Хабропользователи!

Столкнулся в недавнем времени с необходимостью использования собственного почтового сервера. Задачи были предельно просты получить собственный сервер с более менее комфортным веб-интерфейсом как для чтения почты, так и для администрирования. Перечитав добрую часть статей на эту темы я решил остановиться на ROSA Enterprise Linux Server (RELS), о котором было написано несколько статей и на хабре. Снаружи все выглядит вполне комфортно так как решение готово к употреблению из коробки, а на самом деле пришлось встретиться с несколькими ошибками о которых было написано письмо в support, в текущем релизе это не исправлено. Так что кому интересно прошу под кат.

Читать полностью »

В какой-то момент мне потребовалось демонизировать некоторое действие на python. В сети валялась куча примеров подобной деятельности разной степени собранности. Так как в дальнейшем предполагалось использовать код демонизации в дальнейшей деятельности я решил разнести на разные части настройки и собственно демона.
В итоге файлов получилось три:

  • Родительские классы — с небольшим изменением классы взятые из интернет статей
  • Классы настройки — реакция на сигналы, реакция на команды и набор статических настроек для запуска
  • Скрипт запуска — собирает первые два в собственно демона

Дальше я попробую описать логику работы всех трех.
Читать полностью »

Я фрилансер, и основная моя специализация — решения IP телефонии на основе Asterisk.

На днях ко мне обратился один из моих довольно давних клиентов, у которого в прошлом году я внедрял телефонию для call-центра интернет-магазина. Там я ставил и настраивал только и исключительно Asterisk с сопутствующими пакетами, установкой же собственно сервера и ОС (Ubuntu), как и поддержкой системы после внедрения, занимался местный сисадмин, а ко мне изредка обращались с разовыми нетривиальными задачами, требующими квалификации большей, чем простая правка контекстов в диалплане. В этот раз им потребовалось изменить логику работы CDR в части статистики принятых вызовов по очередям.

Договорившись о стоимости и сроках, я приступил к работе. Каково же было мое удивление, когда после включения логирования незавершенных звонков в CDR пошел поток записей а-ля «UNKNOWN UNKNOWN» со статусом «FAILED»! Причем попытки дозвона были направлены на несколько литовских номеров в коде +370.

Поскольку мысль о подключении извне к самому asterisk была после проверки отброшена сразу (все рекомендации по безопасности были выполнены еще на этапе внедрения, стоял fail2ban, а sip-аккаунты имели жесткое ограничение по ip), и при этом AMI был отключен, то оставался один вариант — call-файлы. Так и оказалось. Уточнил у клиента: они не использовали эту технологию и тем более не звонили в Литву. Мораль? Правильно, банальный взлом.
Читать полностью »

Приветствую, уважаемые хабрачитатели.

Предлагаю Вашему вниманию свою небольшую наработку, которая, по моему мнению, может облегчить жизнь администраторам операционных систем «породы» UNIX. Мне, как администратору Unix серверов, часто приходится предоставлять некую информацию по множеству серверов архитектурному комитету, по этому пришла идея написания «всего этого безобразия».

Смысл работы скрипта — выдача всей (ну почти всей) информации о сервере, работающем на Linux или AIX (других ОС семейства UNIX под рукой нет, но я над этим работаю).
Читать полностью »

Здравствуйте, уважаемые читатели!

Продолжая серию постов по многопоточному программированию, хочется коснуться одной фундаментальной проблемы использования сигнальных переменных в Linux, к сожалению, не имеющей пока красивого универсального решения (а может оно просто неизвестно мне). Многие, к сожалению, даже не догадываются о том, что такая проблема имеет место быть.

Рассмотрим простой пример использования сигнальной переменной:

struct timeval now;
struct timespec timeout;
gettimeofday(&now, 0);
timeout.tv_sec = now.tv_sec + 2;      // 2 sec
timeout.tv_nsec = now.tv_usec * 1000; // nsec

retval=0;
pthread_mutex_lock(&mutex);
while(!somethingHappens() && retval==0)
{
    retval=pthread_cond_timedwait(&condition, &mutex, &timeout);
}
pthread_mutex_unlock(&mutex);

Читать полностью »

Владельцы дисков WD серии Green сталкиваются с слишком частой парковкой головок. В этой статье было описано как решить проблему с помощью DOS-утилиты wdidle3 от поддержки WD. Со времен этой статьи прошло много времени, но проблема осталась. Да и сам метод решения с помощью DOS-утилиты не является гуманным.
В процессе решения этой проблемы наткнулся на программу idle3-tools, с помощью котором можно указать время парковки головок из Linux.
Читать полностью »

Каждый программист трепетно относится к своему программному окружению. Очень важно добиться максимального комфорта в работе. В качестве своей операционной системы я использую Linux. Как минимум это полезно для меня на профессиональной почве. Изначально я выбирал Linux по этой причине — чем больше предпосылок будет для самосовершенствования, тем меньше останется моей лени. Linux помогает мне не забывать, что не все программы могут быть оконными. Рабочие и тестовые серверы, с которыми мне приходится работать, управляются из консоли. Доступ к удаленным серверам осуществляется по SSH. Без знания консоли трудно поднять, обновить или внести правки на сервере, потому я стараюсь осваивать эту оболочку по мере сил. Терминал постоянно радует меня своими возможностями, открывая то одну, то другую полезную программу или утилиту. Недавно я открыл для себя программу, позволяющую использовать IM в консоли.
Читать полностью »

Каждый программист трепетно относится к своему программному окружению. Очень важно добиться максимального комфорта в работе. В качестве своей операционной системы я использую Linux. Как минимум это полезно для меня на профессиональной почве. Изначально я выбирал Linux по этой причине — чем больше предпосылок будет для самосовершенствования, тем меньше останется моей лени. Linux помогает мне не забывать, что не все программы могут быть оконными. Рабочие и тестовые серверы, с которыми мне приходится работать, управляются из консоли. Доступ к удаленным серверам осуществляется по SSH. Без знания консоли трудно поднять, обновить или внести правки на сервере, потому я стараюсь осваивать эту оболочку по мере сил. Терминал постоянно радует меня своими возможностями, открывая то одну, то другую полезную программу или утилиту. Недавно я открыл для себя программу, позволяющую использовать IM в консоли.
Читать полностью »

Vim и переключение раскладки клавиатуры Все команды Vim нужно вводить на английском языке. Если основной текст вводится на каком-либо другом языке, то это представляет из себя проблему, т.к. нужно часто переключать раскладку. Одно из решений представлено тут, однако оно заставляет привыкать к новой горячей клавише для переключения раскладки. Так же существует множество платформенно-зависимых решений с вызовом тех или иных утилит. Целью плагина vim-xkbswitch является предоставить единое поведение для многих операционных систем и языков.Читать полностью »

Вслед за Valve, которая с помпой вела тестирование Steam на Linux, на свободные системы решила обратить внимание и «дочка» Dell — Alienware. Сама компания Dell известна тем, что давненько выпускает ноутбуки на Ubuntu, но флагманскими, за исключением ультрабука Sputnik, назвать их нельзя, более того, ни один нельзя было назвать даже игровым, так как даже до внедрения гибридной графики Optimus, официальной реализации которой в Linux нет, Dell предпочитала обходиться интегрированной графикой. Да и сами ноутбуки были нацелены преимущественно на азиатский рынок, и найти их в Еврозоне и России было проблематично, а в США они то появлялись на сайте, то исчезали.
Читать полностью »


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js