автоматизация

warning: Creating default object from empty value in /usr/data/www/drupal6/modules/taxonomy/taxonomy.pages.inc on line 33.

Проверка целостности файлов CR2

Люди тут поплакались, что часть файлов CR2 битая - т.е. показывает какую-то кашу.

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

В зависимости от ситемы ставим:

  • FreeBSD -  pkg install dcraw
  • Ubuntu -  sudo apt-get install dcraw

После этого в нужном каталоге запускаем.

dcraw -c IMG_*.CR2 >> /dev/null  2>>file_crashed.txt

Соответственно, результат смотрим в файле file_crashed.txt.

0
Your rating: Нет

Работа с архивом фотографий.

В очередной раз захотелось навести порядок с фотографиями.

На данный момент набралось что-то около 100 тыс. файлов примерно на 700 гб.

Что не нравится в текущих:

  1. Нет возможности работы на сервере
  2. Нельзя работать из нескольких мест
  3. Нет работы с несколькими местами хранения файлов (т.е. что-то мы положили на внешний винт, что-то на нашем винте и все это слить в экстазе)

Какие программы для фотоархива нашел:

Для сортировки файлов по папкам год/месяц день:

  • скрипт с каким-то просмотрщиком - Wita
  • под Windows - FotoSort

Начал думать как должно все работать. Придумались требования:

0
Your rating: Нет

Вспоминаем учителя Инь Фу Во

Некоторые события напомнили мне о Дао информационной безопасности. Рекомендую ознакомиться с полной версией.

2.2
Инь Фу Во два дня настраивал VPN-туннель для своего персонального компьютера. Когда туннель заработал, Инь уселся, почтительно повернувшись лицом к югу, и стал читать свою френдленту.
– О, Учитель, – спросил его Сисадмин, – я не могу понять, зачем вам VPN?
– Ты разве не знаешь, что в VPN-туннеле весь трафик шифруется? – удивился Инь.
– Знаю. Но ваш туннель терминируется на обычном сервере в стране западных варваров. А далее весь ваш яшмовый трафик идёт по Сети в открытом виде.
– Сети нет дела до моего трафика, чего не скажешь о провайдере, – ответил Учитель. Видя, что Сисадмин не понял, он добавил. – Вот, например, ты доверил свои деньги банку.
Сисадмин кивнул.
– Но ты не можешь доверить все свои деньги собственной супруге, – продолжал мудрый Инь. – Почему? Потому что она может посчитать эти деньги своими. А с банком такого не случится.
Просветлённый Сисадмин ушёл поднимать себе VPN-туннель.

2.10
Директор сказал:
– Зачем нам шифровать содержимое дисков? Зачем нам VPN? У нас нет противозаконной информации.
Мудрый Инь Фу Во ответил:
– Безгрешность – не результат праведности, а результат наивности.

Соответственно, для принятия некоторых привентивных мер нужно поднять тунель в "страны западных варваров".

Задачка из двух частей:

0
Your rating: Нет

Автоматическая установка и обновление 2gis под nix'ами

Возникла необходимость у людей в использовании 2gis. Он поддерживает установку в сетевую папку и использование без установки чего либо на каждом компьютере. Одна беда, для обновления требуется запускать отдельную службу, которая работает или под Windows или под Wine.

Сервер у меня под FreeBSD без Xов и прочего, соответственно, Wine отстутствует. А все настраивать под Windows очень не хочется.

Пришлось придумывать скрипт, который бы полностью установил 2gis со всеми плагинами и городами в определенную папочку на сервере.

Задача разделилась несколько подзадач:

  1. Получение и установка оболочки 2GisShell
  2. Получение и установка плагинов. Т.к. часть плагинов в архивах zip, а часть в виде MSI файликов задача разделилась на:
    1. Получение zip архивов плагинов и распаковка их в нужный каталог
    2. Получение MSI файлов плагинов, их распаковка, переименование файлов и копирование в нужный каталог
  3. Выбор, получение и установка карт городов.

Из-за того, что несколько подзадач, скрипт получился несколько больше чем расчитывал, но надеюсь, достаточно полный и надежный. Т.к. нужно было выдергивать файлы из MSI, как архиватор решил использовать 7zip, т.к. он справляется и с архивами и с MSI.

Пробовал использовать cabextract и unshield, но ни тот ни другой не смогли нормально распаковать MSI - получались какие-то невнятные файлы.

0
Your rating: Нет

Глюки ZFS с мелкими последствиями.

Жил был мой сервер, в основном, с моими фотками (ну и еще по мелочи). ZFS с двумя 2-х ТБ дисками в зеркале, все дела.

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

При попытке засинхронизироваться сервер рассказал, что не может прочитать часть файлов и у них не сростаются cheksum. Запустил scrubbing, он рассказал, что на обоих винтах одинаковые ошибки, и как оказалось в дальнейшем, часть файлов еще и частично посыпалось без каких-либо комментариев. Т.е. читаются нормально, но картинки открываются с артефактами.

Хоть и верю я в рейд и ZFS, но изредка делаю бекап на отдельный диск - мало ли что.

Те файлики, про которые ZFS смогла что-то плохое рассказать перезалил ручками. Про остальные кривые файлы рассказал Syncthing, т.к. он считает  checksum файлов, а на сервере и внешнем носители они оказались разными, то он их перелил, создав отдельную копию старых файлов.

Из неудобств: индексация 250Gb фоток и видео занимала несколько часов и синхронизация не очень шустрая. Если задача залить на пустой ресурс большой объем из "облака", то проще сначала все засинкать через rsync, а потом уже запускать Syncthing.

Наверняка, можно было это решить и с помощью rsync, но т.к. идея в итоге получить мастер-мастер репликации на нескольких ПК, это оказалось проще и несколько удобнее, т.к. я не знаю как rsync заставить создавать архивные копии измененных файлов.

0
Your rating: Нет

Синхронизация данных мастер-мастер

Сейчас, потихоньку учусь играть в отказоустойчивые штуки.

Пока, научился под FreeBSD использовать CARP - эт когда за один IP отвечает несколько железок и в случае падения мастера, включается в работу другой компьютер и подхватывает этот IP адрес.

Соответственно возник вопрос - как держать данные на всех железках в актуальном состоянии.

Что пробовал:

  • rsync - запускается каждую минуту, смотрит на состояние компьютера, если слейв, то синхронизирует данные с мастера.
  • zfs send | zfs recieve - идея та же самая, но надежнее работает с базами данных, т.к. за время работы данные измениться уже не могут.

Сейчас нашел еще две клевые программы BTSync и Syncthing. Обе программы служат для синхоризации данных между своими компьютерами на прямую. Т.е. некоторый аналог Dropbox, Google Drive и Яндекс.диск, только без их стандартных ограничений на место и без опаски, что данные где-то всплывут.

Обе программы могут забирать данные со всех компьютеров имеющих эти данные, т.е. работают по принципу торрента и имеют клиентов под самые разные платформы.

Существенные отличия:

BTSync:

0
Your rating: Нет

Управление внешними устройствами по USB

Давным давно была мечта - научиться управлять внешними устройствами с компьютера и желательно по сети.

Недавно нашлась клевая статья "Включение чего угодно по HTTP без заморочек c OpenWRT", где с помощью роутера TP-Link TL-MR3020, usb-хаба, запчастей от usb-клавиатуры и нескольких радио-деталюшек, прикручивается управление к разъемам переключетелей на мамке компьтера (reset, power), а так же питанием 220.

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

По своему движению с TP-LINKом, прикручиваю GSM модем. Сей час получение смс работает, нуно писать скрипты, которые будут на смс реагировать и дергать лампочками правильно.

0
Your rating: Нет

Создание из dhcpd.leases usertab для sarg

Потребовалось тут как-нить из ip адресов получить сколь-нить осмысленные имена в Sarg. Соответственно нужно подготовить файл соответствия и по возможности не ручками.

Самое простое это из базы DHCP получить выданные IP адреса и полученные имена компьютеров. Итого имеем простенькую строчку.

cat dhcpd.leases | grep -B10 -E "host" | grep -E "lease|hostname" | xargs -n5 echo | awk '{print $2" "$5}' | sed 's/;//'

Соответственно результат запихиваем в какой-нибудь файл, а в sarg.conf usertab прописываем путь к файлу.

0
Your rating: Нет

Теневые копии на samba через zfs.

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

Оказалось все довольно просто.

Имеем:

  • Freebsd 8.x и свежее
  • Samba (у меня samba36-3.6.9)
  • ZFS как файловая система под файлохранилище (она позволяет экономить место и очень быстро создает снепшоты)
  • zfsnap (Simple sh script to make zfs rolling snaphosts with cron) - простенький создатель снепшотов для ZFS под FreeBSD

Подготавливаем Samba:

[Public]
   path = /usr/data/samba/public
   public = yes
   writable = yes
   vfs objects = shadow_copy2
   shadow: snapdir = .zfs/snapshot
   shadow: sort = desc
   shadow: format = %Y-%m-%d_%H.%M.%S--1m

Задание cron для создания снепшотов:

0,30    7-20    *    *   *    root    /usr/local/sbin/zfSnap -d -z -R -a 1m zpool/usr/data/samba/public

После этого мы будем иметь возможность откатиться на любую дневную версию файлопомойки с интервалом в 30 минут с 7 утра до 8 вечера. При этом, места будет заниматься ровно столько, сколько необходимо для хранения всех этих изменений.

0
Your rating: Нет

Учусь использовать Sieve для фильтрации почты на сервере

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

Вроде статей много, как это сделать, но все они упускают 2-а момента:

  1. У пользователся обязательно должен быть так называемый основной скрипт, который все остальные скрипты запускает. В основном, его обзывают ".dovecot.sieve"  и лежит он в корне пользовательского каталога почты. Его содержимое простое до ужаса:
    require ["include"];
    include :personal "my_file_script";

    Соответственно, все файлики со скриптами нужно перечислить, без этого ничего не запустится, сколько бы клевых скриптов не было создано.
  2. Когда пытался из ThunderBird сделать правила, то проблема встала с папочками с русскими именами, ну как обычно. Я пытался использовать не их русское имя, а брать имя из свойства папки, т.е. что-то типа "%26BBgEQQRFBD4ENARPBEkEOAQ1-", что оказалось, хоть и волне логично, но совершенно не верно. Нужно было указывать имя папки русскими буковками, разделяя папочка точками.

После этого, вроде уже нормально все зашуршало.

0
Your rating: Нет
Ленты новостей