Pull to refresh

Проверьте свои знания Linux и улучшите их при помощи нового бота Слёрм

Reading time 1 min
Views 1.3K
Southbridge corporate blog

Привет! В Слёрм завелся новый бот — «Главный по Linux». Он не зовет играть, а помогает протестировать знания Linux и нейтрализовать пробелы в них при помощи полезных материалов.

Читать далее
Total votes 8: ↑8 and ↓0 +8
Comments 0

Bash-скрипт для искрографиков

Reading time 1 min
Views 3.2K
*nix *
Искрографик (англ. sparkline) — это термин, который придумал Эдвард Тафти для обозначения миниатюрных (word-sized), но информационно-плотных графиков. Они показывают общую картину там, где нет места для размещения нормальных графиков с осями координат. Особенно полезными могут быть в таких областях как финансы и трейдинг, спортивные события, научный и медицинский анализ, системное администрирование.



Зак Холман (Zach Holman) из Github написал shell-скрипт Spark, который строит инфографику простой командой spark прямо из шелла (достаточно добавить скрипт куда-нибудь в $PATH).
Читать дальше →
Total votes 86: ↑80 and ↓6 +74
Comments 17

Автоматизация обработки видео-файлов с web-камер средствами shell

Reading time 11 min
Views 14K
System administration *
Tutorial
Sandbox
Понадобилось начальству в своё время организовать своими силами видео-наблюдение за некоторыми вещами и уложиться в минимальное финансирование. Задача автоматизировать это легла на плечи системного администратора, то есть – меня.
Дано: N – видео-камер D-Link 2102, физический двух-юнитовый сервер под сервер видео-наблюдения и удаленное файло-хранилище.
Результатом должна быть возможность пускать некоторых пользователей на сервер видеонаблюдения в онлайн режиме и организовать архив видеозаписей.

Под катом несколько скриптов, которые сильно помогли мне понять, как лучше писать код, зачем нужны многие вещи и как они решаются, а так же навести порядок в своей голове и очень надеюсь, что они помогут кому-то еще.
Проект писался достаточно сложно — настолько сильно я shell(bash) скрипты не изучал — не было надобности до этого.
Но, когда задача поставлена и в голове есть алгоритм решения — все скрипты были переделаны так, чтобы читая их через пол года у меня и моего преемника не было вопросов и желания переписать все с нуля.

UPD: пост периодически обновляется.
Читать дальше →
Total votes 31: ↑29 and ↓2 +27
Comments 16

Автоматическая генерация Dial Patterns для Asterisk из DEF-кодов сотовых операторов

Reading time 4 min
Views 13K
Asterisk *Development of communication systems *
Sandbox
В конторе используем шлюзы GSM, для исходящих звонков на сотовые. Но была задача ограничить диапазон номеров в outboud routes asterisk, чтобы пользователи не звонили куда попало. А именно разрешить исходящую связь только на сотовые своего региона.

Далее можно прочитать как автоматизировать обновление Dial Patterns исходящих звонков в Asterisk, используя общедоступный список DEF-кодов сотовых операторов.
Читать дальше →
Total votes 12: ↑12 and ↓0 +12
Comments 3

Автоматизация начальной настройки веб-сервера

Reading time 11 min
Views 18K
Configuring Linux *Server Administration *
Sandbox
Наверняка, у многих есть собственные веб серверы. Настройка нового сервера с нуля — достаточно нудное и времяубивающее трудоемкое занятие не только для новичка, но и для бывалых.

А если к тому же по долгу службы вам приходится настраивать по несколько серверов в неделю/месяц, то невольно начинаешь задумываться об автоматизации этого процесса. Хочу поделиться bash скриптом, который я использую для начальной настройки RedHat / CentOS серверов.

Продолжаем разговор
Total votes 14: ↑9 and ↓5 +4
Comments 19

Приемы написания скриптов в Bash

Reading time 7 min
Views 172K
Programming *
Sandbox
Администраторам Linux писать скрипты на Bash приходится регулярно. Ниже я привожу советы, как можно ускорить эту работу, а также повысить надежность скриптов.

Совет 1

Не пишите скриптов, которые выполняют действия ничего не спрашивая. Такие скрипты нужны довольно редко. А вот всевозможного «добра» для копирования, синхронизации, запуска чего-либо, хоть отбавляй. И если в любимом Midnight Commander Вы вдруг нажали не на тот скрипт, то с системой может произойти все что угодно. Это как правила дорожного движения — «написано кровью».

Совет 2

Отталкиваясь от предыдущего, в начало каждого скрипта неплохо помещать что-то вроде:
read -n 1 -p "Ты уверен, что хочешь запустить это (y/[a]): " AMSURE 
[ "$AMSURE" = "y" ] || exit
echo "" 1>&2
Команда echo, кстати, здесь нужна потому, что после нажатия кнопки <y> у вас не будет перевода строки, следовательно, следующий любой вывод пойдет в эту же строку.

Совет 3

Это ключевой совет из всех. Для того, чтобы не писать каждый раз одно и то же — пользуйтесь библиотеками функций. Прочитав много статей по Bash, я вынужден констатировать, что этой теме уделяется мало внимания. Возможно в силу очевидности. Однако я считаю необходимым напомнить об этом. Итак.
Заведите свою библиотеку функций, например myfunc.sh и положите ее, например в /usr/bin. При написании скриптов она не только поможет сократить ваш труд, но и позволит одним махом доработать множество скриптов, если Вы улучшите какую-либо функцию.
Например, в свете совета 2 можно написать такую функцию:
Читать дальше →
Total votes 121: ↑83 and ↓38 +45
Comments 46

Приемы написания скриптов на Bash. #2

Reading time 11 min
Views 28K
Programming *
Tutorial
Моя прошлая статья Приемы написания скриптов на Bash вызвала жаркие дебаты в комментариях. Основной ее посыл был в использовании библиотеки функций. Кроме того я описал способ разбора параметров в Bash. Благодарю всех за конструктивные комментарии. Обращаю Ваше внимание, что статья предполагается для широкого круга читателей, а не адресована исключительно системным администраторам.

Продолжим начатое, и на реальном примере дополним подход к разбору параметров и унификации функционала скриптов.
Читать дальше →
Total votes 39: ↑29 and ↓10 +19
Comments 8

Re: Узнать белый IP-адрес роутера с сервера, который за NAT-ом

Reading time 5 min
Views 6.4K
Lumber room
Sandbox
Доброго времени суток Хабр.

Не имея возможности отвечать на вопросы из раздела QA, решил сделать небольшой пост с ответом на этот вопрос.
Мое решение несколько шире, чем вопрос, и надеюсь оно кому-то пригодиться еще.
Читать дальше →
Total votes 21: ↑13 and ↓8 +5
Comments 14

Скачиваем Youtube плейлист в формате mp3 одним bash-скриптом

Reading time 2 min
Views 34K
Configuring Linux *
Sandbox
Так сложилось, что в данный момент мой рабочий ноутбук оснащен лишь 2GB оперативной памяти. В связи с этим возникла необходимость оптимизации браузера, т.к. при большом количестве открытых вкладок памяти становится недостаточно и используется swap-раздел, что ведет к тормозам.

В работе мне помогает музыка, обычно это открытый таб с плейлистом Youtube. Так вот этот таб в просессе работы съедает до 500MB (!) и даже больше (Google Chrome).

Такое положение дел вынудило написать bash-скрипт, который на входе получает ID плейлиста, на выходе – mp3 файлы, которые можно слушать в любимом плеере, например, в MOC:
MOC
Читать дальше →
Total votes 70: ↑61 and ↓9 +52
Comments 48

Наглядное представление активности коммитов SVN в терминале

Reading time 2 min
Views 5.9K
Website development *Version control systems *
В небольших личных проектах я использую SVN и bug-трекером в таких случаях служит лист формата A4. svn log никогда не был легко читаем для меня, поэтому я написал bash-скрипт, позволяющий наглядно видеть активность разработки за последнее время или список коммитов заданной даты:

image

Подробно прокомментированный текст скрипта под катом
Total votes 12: ↑9 and ↓3 +6
Comments 7

Сборка CSS-спрайтов для MIME-описателей из svg/png значков

Reading time 3 min
Views 5.8K
Website development *
Sandbox
Вводная: на нашем сайте есть файловый менеджер, который может загружать любой файл на сайт; при этом файлу нужно автоматически сопоставить значок по его MIME-типу.

Проблема: MIME-типов очень много, собирать значки для них вручную каждый раз — очень долго (и глупо). Требуется какое-то автоматическое решение.

Решение: в этой заметке я собрал простой рецепт самостоятельного изготовления CSS-спрайтов для подключения их в дальнейшем в качестве MIME-описателей на сайте на основе значков из установленных в дистрибутив Ubuntu пакетов тем GTK/Qt.
Читать дальше →
Total votes 9: ↑8 and ↓1 +7
Comments 8

Стандартный обмен 1С-Битрикс на BASH: инкрементальная выгрузка XML файлов каталога import и offers

Reading time 4 min
Views 12K
API *1С-Bitrix *Development for Linux *
Sandbox

Когда говорят о преимуществах 1С-Битрикс, в первых словах упоминают о лёгкой интеграции системы с 1С. Взаимодействие Битрикс с 1С осуществляется посредством передачи данных в формате CommerceML, который определяет формат XML файлов. В дополнение к этому Битрикс предлагает и стандарт обмена этими XML файлами между 1С и сайтом. Обмен состоит в отсылке из 1С обычных HTTP GET и POST запросов на сайт и получения от сайта простых ответов, определяющих результат выполнения команды.


Обычно декларируется, что в составе 1С существует некий "стандартный обмен с сайтом", который должен работать сразу после его включения. На практике, реализация обмена оказывается не такой тривиальной задачей, как это представляется вначале. Есть жалобы на то, что модуль обмена с сайтом 1С непомерно загружает систему и требует доработок под конкретные нужды. То есть, по факту, обмен вроде бы и есть, но чтобы заставить его работать так, как нужно, необходимо приложить усилия.


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


  • Во-первых, источником данных для сайта не всегда может быть 1С. Это может быть какая-то другая информационная база или база другого сайта.
  • Кроме этого, может возникнуть ситуация, когда данные из 1С нужно дополнить другими данными или как-то изменить их.
  • Не всегда есть свободные программисты 1С, которые могут заняться доработками стандартной выгрузки или устранением неполадок в ней.
Читать дальше →
Total votes 21: ↑15 and ↓6 +9
Comments 16

Стандартный обмен 1С-Битрикс на BASH: Подробный разбор скрипта инкрементальной выгрузки

Reading time 8 min
Views 12K
API *1С-Bitrix *Development for Linux *
Для обеспечения синхронизации каталога товаров между системой 1С и сайтом на системе управления Битрикс, используется стандартный для Битрикса протокол обмена XML файлами в формате CommerceML, основанный на передаче от 1С к Битриксу HTTP GET и POST запросов с определёнными параметрами, и получении стандартных ответов, содержащих статус операции, обозначающий результат её выполнения.

В первой статье этой серии дано обоснование возможности применения отдельного скрипта, берущего сформированные 1С или другой системой или программой, XML файлы, и передающего их Битриксу, используя стандартный протокол.

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

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

Далее идёт текст скрипта с комментариями. Краткий вид скрипта, содержащий исключительно код, приведён в предыдущей статье, и доступен на github проекта bitrexchange.
Читать дальше →
Total votes 8: ↑6 and ↓2 +4
Comments 0

Bash-скрипты: начало

Reading time 11 min
Views 1.5M
RUVDS.com corporate blog Configuring Linux *Server Administration *
Translation
Bash-скрипты: начало
Bash-скрипты, часть 2: циклы
Bash-скрипты, часть 3: параметры и ключи командной строки
Bash-скрипты, часть 4: ввод и вывод
Bash-скрипты, часть 5: сигналы, фоновые задачи, управление сценариями
Bash-скрипты, часть 6: функции и разработка библиотек
Bash-скрипты, часть 7: sed и обработка текстов
Bash-скрипты, часть 8: язык обработки данных awk
Bash-скрипты, часть 9: регулярные выражения
Bash-скрипты, часть 10: практические примеры
Bash-скрипты, часть 11: expect и автоматизация интерактивных утилит

Сегодня поговорим о bash-скриптах. Это — сценарии командной строки, написанные для оболочки bash. Существуют и другие оболочки, например — zsh, tcsh, ksh, но мы сосредоточимся на bash. Этот материал предназначен для всех желающих, единственное условие — умение работать в командной строке Linux.


Читать дальше →
Total votes 69: ↑61 and ↓8 +53
Comments 123

Bash-скрипты, часть 2: циклы

Reading time 8 min
Views 622K
RUVDS.com corporate blog Configuring Linux *Server Administration *
Translation
Bash-скрипты: начало
Bash-скрипты, часть 2: циклы
Bash-скрипты, часть 3: параметры и ключи командной строки
Bash-скрипты, часть 4: ввод и вывод
Bash-скрипты, часть 5: сигналы, фоновые задачи, управление сценариями
Bash-скрипты, часть 6: функции и разработка библиотек
Bash-скрипты, часть 7: sed и обработка текстов
Bash-скрипты, часть 8: язык обработки данных awk
Bash-скрипты, часть 9: регулярные выражения
Bash-скрипты, часть 10: практические примеры
Bash-скрипты, часть 11: expect и автоматизация интерактивных утилит

В прошлый раз мы рассказали об основах программирования для bash. Даже то немногое, что уже разобрано, позволяет всем желающим приступить к автоматизации работы в Linux. В этом материале продолжим рассказ о bash-скриптах, поговорим об управляющих конструкциях, которые позволяют выполнять повторяющиеся действия. Речь идёт о циклах for и while, о методах работы с ними и о практических примерах их применения.

image

Внимание: в посте спрятана выгода!
Читать дальше →
Total votes 59: ↑41 and ↓18 +23
Comments 35

Bash-скрипты, часть 3: параметры и ключи командной строки

Reading time 10 min
Views 456K
RUVDS.com corporate blog Configuring Linux *Server Administration *
Translation
Bash-скрипты: начало
Bash-скрипты, часть 2: циклы
Bash-скрипты, часть 3: параметры и ключи командной строки
Bash-скрипты, часть 4: ввод и вывод
Bash-скрипты, часть 5: сигналы, фоновые задачи, управление сценариями
Bash-скрипты, часть 6: функции и разработка библиотек
Bash-скрипты, часть 7: sed и обработка текстов
Bash-скрипты, часть 8: язык обработки данных awk
Bash-скрипты, часть 9: регулярные выражения
Bash-скрипты, часть 10: практические примеры
Bash-скрипты, часть 11: expect и автоматизация интерактивных утилит

Освоив предыдущие части этой серии материалов, вы узнали о том, что такое bash-скрипты, как их писать, как управлять потоком выполнения программы, как работать с файлами. Сегодня мы поговорим о том, как добавить скриптам интерактивности, оснастив их возможностями по получению данных от пользователя и по обработке этих данных.

image
Читать дальше →
Total votes 47: ↑41 and ↓6 +35
Comments 23

Bash-скрипты, часть 4: ввод и вывод

Reading time 9 min
Views 334K
RUVDS.com corporate blog Configuring Linux *Server Administration *
Translation
Bash-скрипты: начало
Bash-скрипты, часть 2: циклы
Bash-скрипты, часть 3: параметры и ключи командной строки
Bash-скрипты, часть 4: ввод и вывод
Bash-скрипты, часть 5: сигналы, фоновые задачи, управление сценариями
Bash-скрипты, часть 6: функции и разработка библиотек
Bash-скрипты, часть 7: sed и обработка текстов
Bash-скрипты, часть 8: язык обработки данных awk
Bash-скрипты, часть 9: регулярные выражения
Bash-скрипты, часть 10: практические примеры
Bash-скрипты, часть 11: expect и автоматизация интерактивных утилит

В прошлый раз, в третьей части этой серии материалов по bash-скриптам, мы говорили о параметрах командной строки и ключах. Наша сегодняшняя тема — ввод, вывод, и всё, что с этим связано.

image
Читать дальше →
Total votes 34: ↑28 and ↓6 +22
Comments 16

Bash-скрипты, часть 5: сигналы, фоновые задачи, управление сценариями

Reading time 9 min
Views 163K
RUVDS.com corporate blog Configuring Linux *Server Administration *
Translation
Bash-скрипты: начало
Bash-скрипты, часть 2: циклы
Bash-скрипты, часть 3: параметры и ключи командной строки
Bash-скрипты, часть 4: ввод и вывод
Bash-скрипты, часть 5: сигналы, фоновые задачи, управление сценариями
Bash-скрипты, часть 6: функции и разработка библиотек
Bash-скрипты, часть 7: sed и обработка текстов
Bash-скрипты, часть 8: язык обработки данных awk
Bash-скрипты, часть 9: регулярные выражения
Bash-скрипты, часть 10: практические примеры
Bash-скрипты, часть 11: expect и автоматизация интерактивных утилит

image

В прошлый раз мы говорили о работе с потоками ввода, вывода и ошибок в bash-скриптах, о дескрипторах файлов и о перенаправлении потоков. Сейчас вы знаете уже достаточно много для того, чтобы писать что-то своё. На данном этапе освоения bash у вас вполне могут возникнуть вопросы о том, как управлять работающими скриптами, как автоматизировать их запуск.
Читать дальше →
Total votes 31: ↑27 and ↓4 +23
Comments 8

Bash-скрипты, часть 6: функции и разработка библиотек

Reading time 9 min
Views 212K
RUVDS.com corporate blog Configuring Linux *Server Administration *
Translation
Bash-скрипты: начало
Bash-скрипты, часть 2: циклы
Bash-скрипты, часть 3: параметры и ключи командной строки
Bash-скрипты, часть 4: ввод и вывод
Bash-скрипты, часть 5: сигналы, фоновые задачи, управление сценариями
Bash-скрипты, часть 6: функции и разработка библиотек
Bash-скрипты, часть 7: sed и обработка текстов
Bash-скрипты, часть 8: язык обработки данных awk
Bash-скрипты, часть 9: регулярные выражения
Bash-скрипты, часть 10: практические примеры
Bash-скрипты, часть 11: expect и автоматизация интерактивных утилит

Занимаясь разработкой bash-скриптов, вы рано или поздно столкнётесь с тем, что вам периодически приходится использовать одни и те же фрагменты кода. Постоянно набирать их вручную скучно, а копирование и вставка — не наш метод. Как быть? Хорошо бы найти средство, которое позволяет один раз написать блок кода и, когда он понадобится снова, просто сослаться на него в скрипте.



Оболочка bash предоставляет такую возможность, позволяя создавать функции. Функции bash — это именованные блоки кода, которые можно повторно использовать в скриптах.
Читать дальше →
Total votes 50: ↑47 and ↓3 +44
Comments 33

Bash-скрипты, часть 7: sed и обработка текстов

Reading time 9 min
Views 530K
RUVDS.com corporate blog Configuring Linux *Server Administration *
Translation
Bash-скрипты: начало
Bash-скрипты, часть 2: циклы
Bash-скрипты, часть 3: параметры и ключи командной строки
Bash-скрипты, часть 4: ввод и вывод
Bash-скрипты, часть 5: сигналы, фоновые задачи, управление сценариями
Bash-скрипты, часть 6: функции и разработка библиотек
Bash-скрипты, часть 7: sed и обработка текстов
Bash-скрипты, часть 8: язык обработки данных awk
Bash-скрипты, часть 9: регулярные выражения
Bash-скрипты, часть 10: практические примеры
Bash-скрипты, часть 11: expect и автоматизация интерактивных утилит

В прошлый раз мы говорили о функциях в bash-скриптах, в частности, о том, как вызывать их из командной строки. Наша сегодняшняя тема — весьма полезный инструмент для обработки строковых данных — утилита Linux, которая называется sed. Её часто используют для работы с текстами, имеющими вид лог-файлов, конфигурационных и других файлов.


Читать дальше →
Total votes 22: ↑18 and ↓4 +14
Comments 34