Search
Write a publication
Pull to refresh
0
0
Огурчёнок Иван @MrNobody

Linux Administrator, DevOps Engineer

Send message

Bash: запускаем демон с дочерними процессами

Reading time5 min
Views44K
Доброго всем настроения!
Прочитал я вот эту статью, и решил немного сам взять в руки шашки, и попробовать сделать что-нибудь приятное для себя и для других.
Мой скрипт не делает никаких полезных вещей, но думаю для более менее начинающих писателей на bash он чему-нибудь научит, да и если будут комментарии, то и я научусь от тех людей которые укажут на мои ошибки.

Вводная

Скрипт будет запускаться в фоне демоном. Сразу думаю надо договориться что сам процесс который будет висеть в памяти постоянно я буду называть «Родителем». Родитель будет в определенном каталоге искать определенный файл, и если он существует, то файл будет удален и запущен процесс, который я буду называть «Потомок», целью которого будет просто спать какое-то время, и после чего завершиться. Но Родитель не должен будет запускать более одного Потомка в единицу времени. В принципе, если Вы прочитали вышеуказанную статью, то смысл я думаю понятен.
Читать дальше →

Оперативная реакция на DDoS-атаки

Reading time4 min
Views51K
Один из ресурсов, за которым я присматриваю, вдруг стал неожиданно популярным как у хороших пользователей, так и у плохих. Мощное, в общем-то, железо перестало справляться с нагрузкой. Софт на сервере самый обычный — Linux,Nginx,PHP-FPM(+APC),MySQL, версии — самые последние. На сайтах крутится Drupal и phpBB. Оптимизация на уровне софта (memcached, индексы в базе, где их не хватало) чуть помогла, но кардинально проблему не решила. А проблема — большое количество запросов, к статике, динамике и особенно базе. Поставил следующие лимиты в Nginx:

на соединения
limit_conn_zone $binary_remote_addr zone=perip:10m;
limit_conn perip 100;

и скорость запросов на динамику (fastcgi_pass на php-fpm)
limit_req_zone $binary_remote_addr zone=dynamic:10m rate=2r/s;
limit_req zone=dynamic burst=10 nodelay;

Сильно полегчало, по логам видно, что в первую зону никто не попадает, зато вторая отрабатывает по полной.

Но плохиши продолжали долбить, и захотелось их отбрасывать раньше — на уровне фаервола, и надолго.

Сначала сам парсил логи, и особо настырных добавлял через iptables в баню. Потом парсил уже по крону каждые 5 минут. Пробовал fail2ban. Когда понял, что плохишей стало очень много, перенёс их в ipset ip hash.

Почти всё хорошо стало, но есть неприятные моменты:
— парсинг/сортировка логов тоже приличное (процессорное) время отнимает
— сервер тупит, если началась новая волна между соседними разборками (логов)

Нужно было придумать как быстро добавлять нарушителей в черный список. Сначала была идея написать/дописать модуль к Nginx + демон, который будет ipset-ы обновлять. Можно и без демона, но тогда придётся запускать Nginx от рута, что не есть красиво. Написать это реально, но понял, что нет столько времени. Ничего похожего не нашёл (может плохо искал?), и придумал вот такой алгоритм.

При привышении лимита, Nginx выбрасывает 503-юю ошибку Service Temporarily Unavailable. Вот я решил на неё и прицепиться!

Для каждого location создаём свою страничку с ошибкой
error_page 503 =429 @blacklist;

И соответствующий именованный location
location @blacklist {
    fastcgi_pass    localhost:1234;
    fastcgi_param   SCRIPT_FILENAME    /data/web/cgi/blacklist.sh;
    include         fastcgi_params;
}

Дальше интересней.
Нам нужна поддержка CGI-скриптов. Ставим, настраиваем, запускаем spawn-fcgi и fcgiwrap. У меня уже было готовое для collectd.

Сам CGI-скрипт
Читать дальше →

LibreOffice в корпоративном секторе — от теории к практике

Reading time4 min
Views37K

LibreOffice в корпоративном секторе — к старту готов


Есть на Хабре такая хорошая статья за авторством frozer, в которой рассматривается развертывание (с помощью Active Directory) и использование LibreOffice (LO) в корпоративной среде.

Единственный минус статьи — только теоретический подход. Т.е. автор описывает что можно сделать для корпоративной интеграции LO, но практическая часть отсутствует, как таковая.

Я пытался узнать секреты и получить советы на официальном русскоязычном форуме LO, и вот что получил в ответ:
Есть самый эффективный путь.
Скомпильте из иисходников под себя. Или заплатите тому, кто это сделает.
Это явно не тот метод. В интернете информации тоже очень мало, поэтому будем восполнять пробелы.

Инструкция — под катом.
Читать дальше →

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

Reading time2 min
Views196K


Вечер добрый. Пару лет назад компания, которую администрирую, расширялась и переехала в новое, более обширное, помещение. Арендодатель сдал нам голую площадь, на которой строители возводили стены, электрики тянули проводку, ну а я, впервые для себя, побывал в роли монтажника СКС. Данный пост является просто фото-отчетом, может кому-нибудь будет интересно посмотреть, а люди, у которых монтажные работы — хлеб, выдадут какие-нибудь замечания и поругают за кривизну работы. Прошу под кат(осторожно, много фотографий).
Читать дальше →

Настенная патч-панель методом DIY

Reading time1 min
Views88K
На этапе облагораживания домашней лаборатории появилась необходимость иметь над столом розетки RJ45 в количестве хотя-бы штук 10-ти. Покупать кучу накладных розеток не хотелось, а готовые настенные патч-панели внешним видом и способом установки тоже как-то не радовали. Родилась мысль решить задачу самостоятельно. Получилась вот такая штука
image
Кому интересно, как именно получилась — прошу под кат
Читать дальше →

Прячем Bash скрипты

Reading time2 min
Views18K
Очень часто на фрилансе бывает, так что заказчик просит сделать некоторую работу, получив тестовую версию, принимает её и отказывается платить
Я на фрилансе достаточно часто делаю скрипты под заказ, администрирование серверов и тд, автоматизация неких процессов на сервер, уловив основную идею написания, как правило, заказчик пропадает, решив что это все так просто и не за что платить.
Столкнувшись с понятием Обфуска́ция в С, решил поискать аналогичное решение и для своего любимого Bash.
Читать дальше →

Время вспять…

Reading time3 min
Views72K
Вот и отгремело первое апреля. Кто-то в этот день нюхал свои девайсы в новом сервисе Google Nose, кто-то играл в «Поле чудес», а кто-то, позабыв о роковой дате, просто угрюмо отряхивал спину от мела…

Я же, воодушевлённый статьёй про скрытые возможности кастомизации процесса explorer.exe, тоже решил сделать что-нибудь забавное.
Пусть сегодня моя секундная стрелка часов в Windows идёт в обратную сторону! Не самый, конечно, полезный в хозяйстве мод, но в академических и рекреационных целях вполне сгодится :)
Часовую и минутную стрелки я оставил в правильном направлении. Иногда всё же приходится полгядывать на часы в трее — пусть они показывают время с точностью хотя бы до минуты...
Читать дальше →

Экспорт Хабра в FB2

Reading time2 min
Views16K
Приветствую!

Некоторое время назад попалась мне статья об экспорте избранного Хабра в формат FB2.
Мне идея понравилась, но было одно 'но': необходимо было вручную запускать экспорт на локальной машине, а хотелось сразу в браузере; и во-вторых — для запуска надо было установить локально PHP и закачать исходники.

Поэтому я решил написать расширение для браузера, которое бы позволяло просто экспортить в FB2. По ходу написания добавил также экспорт в FB2 и для Самиздата.
Читать дальше →

Онлайн вещание через Nginx-RTMP: несколько готовых рецептов

Reading time5 min
Views155K
Недавно я наткнулся на топик "Сервер онлайн-вещаний на базе nginx" о замечательном модуле Романа Арутюняна (@rarutyunyan) для nginx: nginx-rtmp-module. Модуль очень прост в настройке и позволяет на основе nginx создать сервер публикации видеозаписей и живого вещания.

Про сам модуль можно прочитать на его странице на GitHub, я же хочу привести несколько простых примеров использования. Надеюсь, топик поможет новичкам в видеоделах (таким как я).

Читать дальше →

Букмарклет для шаринга в Одноклассники.ru

Reading time1 min
Views3.4K
У многих соц.сетей и сообществ существуют примеры использования букмарклетов (bookmarklet) для шаринга ссылок, картинок и т.п. из броузера. Мне кажется это удобным, если вы любите часто делиться контентом через соц.сети. Например, чтобы поделиться открытой в окне броузера фоткой или картинкой достаточно воспользоваться букмарклетом, вместо того, чтобы копировать адрес фотки, открывать страницу соц.сети и там как-то шарить ссылку.
У FB, VK, LJ и прочих примеры букмарклетов есть обычно в разделе помощи. У Одноклассников (odnoklassniki.ru) нет ни примера на сайте сети, ни примеров вообще в гугле. То ли никому эта сеть не нужна, то ли никто не пользуется букмарклетами для шаринга контента.
Т.к. в сети не нашёл ни одного примера букмарклета, решил поделиться своей поделкой (взял букмарклет для FB и переделал его под Одноклассники).
Читать дальше →

Возвращаем приватность или большой брат следит за мной на стандартных настройках. Часть 2. Блокируем следящие скрипты на сайтах и настраиваем VPN

Reading time7 min
Views165K
В первой части мы говорили об общих настройках для всех браузеров, вскользь прошлись по паролям, шифрованию и бекапе, а также несколько усложнили жизнь «Гуглу».

Сегодня посмотрим (и избавимся) на то, сколько статистики собирают на нас даже без использования сторонних «куки»-файлов и расскажем о пользе и настройке VPN простым языком.

Хочу сказать большое спасибо всем, кто оставлял комментарии в прошлой статье (и оставит в этой) — все ваши дельные советы будут включены в этот или последующий мануалы.


Читать дальше →

Linux в домене Active Directory

Reading time6 min
Views240K
Перед администраторами иногда встают задачи интеграции Linux серверов и рабочих станций в среду домена Active Directory. Обычно требуется:
1. Предоставить доступ к сервисам на Linux сервере пользователям домена.
2. Пустить на Linux сервер администраторов под своими доменными учётными данными.
3. Настроить вход на Linux рабочую станцию для пользователей домена, причём желательно, чтобы они могли при этом вкусить все прелести SSO (Я, например, не очень люблю часто вводить свой длинный-предлинный пароль).

Обычно для предоставления Linux системе пользователей и групп из домена Active Directory используют winbind либо настраивают библиотеки nss для работы с контроллером домена Active Directory по LDAP протоколу. Но сегодня мы пойдём иным путём: будем использовать PowerBroker Identity Services (Продукт известен также под именем Likewise).
Как ввести Linux машину в домен Active Directory

Как запустить программу без операционной системы: часть 2

Reading time8 min
Views65K


В первой части нашей статьи мы рассказали о том, каким образом можно получить простую программу “Hello World”, которая запускается без операционной системы и печатает сообщение на экран.

В этой части статьи, хочется развить получившийся в первой части код таким образом, чтобы он мог быть отлажен через GDB, компилировался через оболочку Visual Studio и печатал на экран список PCI устройств.

! ВАЖНО!: Все дальнейшие действия могут успешно осуществляться только после успешного прохождения всех 6-ти шагов описанных в первой части статьи).

Читать дальше →

А вы хорошо знаете статическую маршрутизацию?

Reading time12 min
Views213K
Статический маршрут — первое, с чем сталкивается любой человек при изучении понятия маршрутизации IP пакетов. Считается, что это — наиболее простая тема из всех, в ней всё просто и очевидно. Я же постараюсь показать, что даже настолько примитивная технология может содержать в себе множество нюансов.
Следите за руками.

Компиляция пакетов

Reading time2 min
Views34K
В Ubuntu используется философия пакетного менеджмента, то есть все программы ставятся из пакетов deb, в которых хранится, собственно сама программа и скрипты, которые корректно ставят/удаляют/обновляют. Пакеты deb можно найти в сети Интернет, на дисках. Самый лучший способ использовать репозитории, хранилища deb пакетов. Если использовать репозитории, то при появлении в них новых версий установленных у вас программ, вам будет проще и быстрей обновить их. Это очень удобно и позволяет держать систему актуальной и защищенной. Иногда требумой программы в репозитариях нет и приходится компилировать из исходников. Но это надо делать правильно.
Сегодня я хочу предложить изящный метод, не раз помогавший мне.
Читать дальше →

Таблица для выбора диагонали экрана и разрешения

Reading time2 min
Views184K
Когда у вас возникнет вопрос, как выбрать диагональ экрана, или в каком разрешении скачать фильм, предлагаю воспользоваться таблицей Головина для выбора диагонали экрана (pdf, 85 Кб). Название я придумал сам, надеюсь, Головин был бы не против.



С появлением первых телевизоров с разрешением 4к (3840 × 2160), я хотел обновить график для определения оптимального расстояния до экрана. Но, поскольку там указаны рекомендуемые расстояния, это бы снова вылилось в субъективные обсуждение возможностей зрения каждого. Новая таблица, теоретически, должна помочь каждому сделать выбор, в не зависимости от остроты зрения.

Инструкция и теория

Балансировка входящих соединений на iptables

Reading time3 min
Views27K
Предположим, что у вас есть некий сервис, принимающий входящие соединения и возникла задача балансировки нагрузки и/или отказоустойчивости.

В общем виде схема выглядит так:
клиент ----> балансировщик ---> бэкенд (сервис)


Готовых балансировщиков под конкретные нужды множество. Например, nginx — отличный балансировщик для веб-приложений, haproxy для tcp-соединений.

Так почему iptables?

Cacti: Мониторинг SMART

Reading time5 min
Views46K


Восстановление данных в результате «физической смерти» носителя информации не самое приятное времяпрепровождение в жизни любого системного администратора. Следовательно, чем долгие часы исправлять ситуацию, а данных у нас очень много, лучше её предотвратить — организовав мониторинг.

У жестких и твердотельных накопителей есть встроенная технология, которая позволяет производить самостоятельную самодиагностику — S.M.A.R.T., к ней мы и будем работать.
S.M.A.R.T. — технология оценки состояния жёсткого диска встроенной аппаратурой самодиагностики, а также механизм предсказания времени выхода его из строя.

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

В качестве исходного сервера выступает Linux CentOS 6, работающий, в роли файлового хранилища.

Linux содержит группу пакетов под названием «Smartmontools», которые представляют собой набор утилит для проверки состояния дисков. Непосредственно конфигурация демона smartd для регулярного тестирования и мониторинга SMART, выходит за рамки данной статьи, интересующиеся могут самостоятельно найти примеры настройки в Интернете.

Нас же интересует графическое отображение ключевых параметров, аномальное изменение которых можно увидеть порой только визуально. И в этом нам поможет Cacti.
Читать дальше →

Как запустить программу без операционной системы

Reading time13 min
Views184K

Так вышло, что в нашей статье, описывающей механизм опроса PCI шины, не было достаточно подробно описано самого главного: как же запустить этот код на реальном железе? Как создать собственный загрузочный диск? В этой статье мы подробно ответим на все эти вопросы (частично данные вопросы разбирались в предыдущей статье, но для удобства чтения позволим себе небольшое дублирование материала).

В интернете существует огромное количество описаний и туториалов о для того как написать собственную мини-ОС, даже существуют сотни готовых маленьких хобби-ОС. Один из наиболее достойных ресурсов по этой тематике, который хотелось бы особо выделить, это портал osdev.org. Для дополнения предыдущей статьи про PCI (и возможности писать последующие статьи о различных функциях, которые присутствуют в любой современной ОС), мы опишем пошаговые инструкции по созданию загрузочного диска с привычной программой на языке С. Мы старались писать максимально подробно, чтобы во всем можно было разобраться самостоятельно.

Итак, цель: затратив как можно меньше усилий, создать собственную загрузочную флешку, которая всего-навсего печатает на экране компьютера классический “Hello World”.

Читать дальше →

Практика борьбы с прокрастинацией и нелюбовью к планированию

Reading time7 min
Views165K
DISCLAIMER: Все изложенные ниже приемы работают для меня, и не факт, что будут работать для вас. IMHO only, на истинность в последней инстанции не претендую.

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

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



Отдых тела и ума


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

Второй важный пункт — еда. Для работы мозга — а работа в IT суть интеллектуальный труд — нужно много хорошей еды.
Если вы выспались и сыты, то силы должны быть, если их нет, идем дальше.

Активное тело, температура в помещении
Иногда нужно размять тело. Вовсе не так просто в СССР была производственная зарядка, о которой так бодро пел Высоцкий.

Тут есть глубокий физический смысл. Когда вы приводите свои мышцы в активность, повышается их тонус, в теле изменяется обмен веществ. Организм понимает, что нужно стать бодрее — и через 10-15 минут разминки вы себя не узнаете.
Читать дальше →

Information

Rating
Does not participate
Location
Владивосток, Приморский край, Россия
Date of birth
Registered
Activity