Shell

Довольно часто наши клиенты сталкиваются с необходимостью выгрузить информацию о звонках из раздела Call Detail Record к себе. Как вы уже знаете (даже если взять во внимание предыдущую запись в этом блоге, а именно Липкость звонка), вся историческая статистика хранится в базе elasticsearch. В документации вы так же могли увидеть пример получения данных с помощью нашего REST API. Но, что если звонков несколько сотен? Или несколько тысяч? Как правильно получить такой объем данных? Сегодня я расскажу как работать с большими объемами данных.

Scroll

Для получения большого количества данных, в elasticsearch предусмотрен функционал scroll, который мы повторили и в нашем REST API. Рассмотрим на примере:

В предыдущей статье я рассказал, как я подготавливаю Linux сервер к работе. Открывая тему моего набора инструментов на сервере, я хочу начать с первых программ, с помощью которых осуществляется подключение и работа в удаленном терминале. Это mosh, zsh и tmux.

mosh (mobile shell)

Mosh — современная замена старого доброго SSH. Ладно, это не полная его замена, поскольку для работы mosh нужен все тот-же ssh, можем сказать, что это новое дыхание для ssh ;). После того, как произошло соединение, запускается mosh-server с использованием одного из UDP портов в диапазоне от 60000 до 60010. Дальнейшее взаимодействие между клиентом и сервером происходит по UDP.

“А что это за программа такая?” — часто приходиться слышать, работая на сервере в SSH терминале, от человека, который подошел и уставился в мой монитор. Сегодня, дорогой друг, стоящий за моей спиной, я познакомлю тебя с ПО, которое использую в ежедневной работе. Но, начать надо с того, как все это добро попадает на тот самый Linux сервер.

Виртуальные машины приходят и уходят, иногда, десятками за неделю. Каждый раз настраивать “под себя” утомительно… Я нашел для себя решение задачи и теперь готов поделиться. Это ansible — простой инструмент, который через стандартное SSH подключение выполняет рутинные операции по подготовке сервера к работе. Все инструкции, что делать, описаны в файле playbook.yml. В качестве хоста, который будет настраивать, должна быть Linux либо OSX машина. Я это всегда делаю со своего MacBook либо с тестового Linux сервера в офисе. Но, в основном с MacBook. Сам рецепт приготовления сервера, я выложил на github и сейчас расскажу, как им пользоваться.

Процесс настройки состоит из нескольких этапов:

  1. Установка всего необходимого мне ПО.
  2. Создание пользователей и настройка ключей авторизации для SSH. Отключение регистрации по паролю и отключение root через ssh.
  3. Настройка firewall — опционально.
  4. Установка docker — опционально.

А теперь о каждом пункте детальный.

Сьогодні необхідно було надіслати Email з прикріпленим файлом на віддаленному сервері, доступ до якого я Ваю лише по SSH. Виявилося усе банально просто:

  1. Встановити mutt (у мене він вже був встановленний)
  2. Надсилаємо з консолі
 mutt -s "TEST mail" -a /home/samael/nazia.sql.bz sss@domain.org < /tmp/email_text

де,

  • sss@domain.org — одержувач
  • /tmp/email_text — тіло повідомлення (читається з приговленого файла «/tmp/email_text»)
  • /home/samael/nazia.sql.bz — додаток (опція -a)
  • «Test mail» — тема повідомлення (опція -s)

Для конвертування я обрав ffmpeg (Windows версія тут). Послідовність параметрів така:

ffmpeg програма
-i input.avi вхідний файл
-b 1024k вихідний bitrate
-s 640×480 вихідна роздільна здатність
-r 25 вихідна кількість кадрів у секунду
-acodec copy вихідний аудіо кодек
movie.flv вихідний файл

Виконую свою команду:

ffmpeg -i ColdCalls.avi -b 1024k -s 640x480 -r 25 -acodec copy ColdCalls.flv

Додатково документація.

Необхідно було змінити розмір зображень для фото галереї на один сайт. Усього — штук 200 було. Як це швидко зробити? Ось тут мені знадобилась така чудова програма, як ImageMagick®. Її доволі просто можна встановити з портів FreeBSD і вона присутня майже у всіх Linux дистрибутивах.

А тепер магія — однією командою змінюємо розмір усіх зображень до необхідного нам і зберігаємо в нові файли (для назви обрав поточну дату і час):

ls  | while read i; do convert -resize 1200x800  "$i" ../etc/`date +%s`".jpg"; done

Якщо почитаєте у манах, то знайдете ще не один цікавий параметр!

Digital Picture and File Recovery
Digital Picture and File Recovery

Вкотре стикаюся з необхідністю відновити файли, які (якимось дивом) видалав зі своєї флешки 🙂 І постійно забуваю назву цієї чудової, а головне OpenSource програми. Записую для усіх: testdisk та photorec.

testdisk
Силна утиліта для діагностики та лікування дискових розділів та файлів. Вміє відновлювати видалені файли з FAT16/FAT32, NTFS, Ext2/Ext3. Інструкція англійською.

photorec
Основне призначення — відновлення випадково видалених зображень. Інструкція англійською

Програми розповсюджуються під ліцензією GNU GPL, можна завантажити версії для Windows, Linux, MacOS.

Стояла задача: швидко замінити у 200 XML файлах стрічку «tbl_Offering» на «tbl_OfferingMovement». Ось як це можна зробити одним рядком Perl коду під Debian GNU/Linux (оригінал кожного файлу зберігається окремо з розширенням bak):

perl -i.bak -p -e 's/tbl_Offering/tbl_OfferingMovement/gi;' *