Жил был мой сервер, в основном, с моими фотками (ну и еще по мелочи). ZFS с двумя 2-х ТБ дисками в зеркале, все дела.
Т.к. нашел программы удовлетворяющие моим требованиям для синхронизации файлов мастер-мастер, соответственно попытался прикрутить к своему хранилищу.
При попытке засинхронизироваться сервер рассказал, что не может прочитать часть файлов и у них не сростаются cheksum. Запустил scrubbing, он рассказал, что на обоих винтах одинаковые ошибки, и как оказалось в дальнейшем, часть файлов еще и частично посыпалось без каких-либо комментариев. Т.е. читаются нормально, но картинки открываются с артефактами.
Хоть и верю я в рейд и ZFS, но изредка делаю бекап на отдельный диск - мало ли что.
Те файлики, про которые ZFS смогла что-то плохое рассказать перезалил ручками. Про остальные кривые файлы рассказал Syncthing, т.к. он считает checksum файлов, а на сервере и внешнем носители они оказались разными, то он их перелил, создав отдельную копию старых файлов.
Из неудобств: индексация 250Gb фоток и видео занимала несколько часов и синхронизация не очень шустрая. Если задача залить на пустой ресурс большой объем из "облака", то проще сначала все засинкать через rsync, а потом уже запускать Syncthing.
Наверняка, можно было это решить и с помощью rsync, но т.к. идея в итоге получить мастер-мастер репликации на нескольких ПК, это оказалось проще и несколько удобнее, т.к. я не знаю как rsync заставить создавать архивные копии измененных файлов.
Было скучно, читал интернеты и наткнулся на статью "Посторонним вход воспрещен", более коротко - "Аутентификация при помощи Bluetooth телефона или USB Flash в Debian/Ubuntu Linux"
Проверил сначала авторизацию через флэшку - нормально работает, вопрос, конечно, что будет с примонтированным разделом, если так лихо флэшку дергать.
Начал разбираться с авторизацией по блютуз устройсту - заходить без пароля, если рядом валяется телефон - это удобно, вроде тоже нормально отработало.
Как позжее выяснилось есть пара мелких подводных булыжников.
Далее стало интересно, как сделать, чтобы компьютер автоматически блокировался при исчезновении телефона.
Сначала нашел BlueProximit, но он у меня как-то не стабильно работал и мобила постоянно дергалась с целью установить сопряжение.
В итоге нарисовал свой скрипт, который ищет имя устройства по маку, когда находит, сверяет с тем, что имеется в конфиге и если находит, то выполняет какие-то действия.
Плюсы:
Давно хотел попробовать, что из себя представляет Мультифон от Мегафона. (Прямо сейчас, у них какая-то беда с сайтом - сервер не найден. Ночью периодически nginx ругался.)
Качество связи осознать не успел, но успел осознать некоторые плюсы:
Сейчас, потихоньку учусь играть в отказоустойчивые штуки.
Пока, научился под FreeBSD использовать CARP - эт когда за один IP отвечает несколько железок и в случае падения мастера, включается в работу другой компьютер и подхватывает этот IP адрес.
Соответственно возник вопрос - как держать данные на всех железках в актуальном состоянии.
Что пробовал:
Сейчас нашел еще две клевые программы BTSync и Syncthing. Обе программы служат для синхоризации данных между своими компьютерами на прямую. Т.е. некоторый аналог Dropbox, Google Drive и Яндекс.диск, только без их стандартных ограничений на место и без опаски, что данные где-то всплывут.
Обе программы могут забирать данные со всех компьютеров имеющих эти данные, т.е. работают по принципу торрента и имеют клиентов под самые разные платформы.
Существенные отличия:
BTSync:
Как обычно, как только ты думаешь, что что-то познал до конца, тебе объясняют, что ты не знаешь ни черта.
Я тут ужо поверил, что знаю кто такие умные свичи и вланы, как оказалось, что не могу спокойно в отдельный влан запихнуть пару железок. Теперь попытаюсь привести мысли немного в порядок.
Вроде про VLAN написано много, но так чтобы у меня все сразу устаканилось не нашел.
Некоторые полезные команды в CLI интерфейсе астериска
asterisk -rvvv - подключиться к консоли
core show channels - посмотреть статус каналов
sip show users - посмотреть пользователей сервера (пользователь, пароль, контекст)
sip show peers - посмотреть пиров сервера (пользователь, ip адрес, порт, статус)
sip show registry - посмотреть статус регистраций, т.е. как сервер зарегистрировался
Стырено тут.
Т.к. потихоньку движется проект по мегапереходу на VoIP телефонию, начал разбираться с автонастройкой телефонов. Т.к. у меня планируются все телефоны Panasonic, соответственно, разбирался под них.
Астериск умеет сам генерировать файлы автоматической конфигурации клиентов. У него есть два модуля - http и phoneprov.
http - отвечает за то, чтобы asterisk мог работать web-сервером, а phoneprov - за автоматическое создание файлов конфигурации.
Чего нормально не могу придумать, так это защиту от несанкционированного получения параметров. Вроде, есть идея прогонять через nginx с его авторизацией, но это пока в процессе размышления. Человек, по статье которого делал, пишет, что после запуска всех телефонов, оно отключал http, но я не уверен, что панасоники вспомнят автоматические настройки после перезагрузки при отсутствии сервера.
(P.S. После получения настроек - телефоны их сохраняют и сервер не требуется. Соответственно, после того как телефоны получили настройки, можно спокойно у пользователя отключать провижен.)
Для получения файлов автоконфигурации нам нужно включить оба модуля.
1. Включаем http, для этого в файле http.conf пишем:
[general]
enabled=yes
bindaddr=0.0.0.0
bindport=8088
2. Настраиваем автоматиское создание файлов конфигурации телефонов - phoneprov.conf.
В очередной раз потребовалось подготовить голосовые файлы для астериска, и так как долго вспоминал как делается, нарисовал скриптик, который это все автоматизирует.
#!/bin/sh
file=$1
file_ext=${file##*.}
file_name=${file%.*}
ffmpeg_cmd="ffmpeg -loglevel quiet -i "
edit_file=/tmp/${file_name}_$$.wav
#echo ${edit_file} ${file_ext} ${file_name}
${ffmpeg_cmd} $1 ${edit_file}
normalize ${edit_file}
mkdir out
${ffmpeg_cmd} ${edit_file} -acodec pcm_s16le -ar 8000 -ac 1 -y out/${file_name}.wav
${ffmpeg_cmd} ${edit_file} -ar 8000 -ac 1 -ab 64 -f alaw -y out/${file_name}.alaw
${ffmpeg_cmd} ${edit_file} -ar 8000 -ac 1 -ab 64 -f mulaw -y out/${file_name}.ulaw
rm ${edit_file}
Вроде работает.
Соответственно, запускаем sound2asterisk.sh имя_файла, после выполнения в каталоге out забираем результат.
Давным давно была мечта - научиться управлять внешними устройствами с компьютера и желательно по сети.
Недавно нашлась клевая статья "Включение чего угодно по HTTP без заморочек c OpenWRT", где с помощью роутера TP-Link TL-MR3020, usb-хаба, запчастей от usb-клавиатуры и нескольких радио-деталюшек, прикручивается управление к разъемам переключетелей на мамке компьтера (reset, power), а так же питанием 220.
Еще найденные клевые штуки, чтобы минимально поморачиваясь сделать управление чем бы то ни было:
По своему движению с TP-LINKом, прикручиваю GSM модем. Сей час получение смс работает, нуно писать скрипты, которые будут на смс реагировать и дергать лампочками правильно.
Поигрался немного с iSCSI и добавлением iSCSI устройств в zpool. Все хорошо, все работает, но к сожалению, ровно до тех пор, пока iSCSI не отваливается.
Как только отваливается iSCSI устройство, любой процесс обратившийся к пулу вешается навеки до перезагрузки или до восстановления устройства. Система не может нормально сообщить, что устройство в дауне и zfs ожидает ответа до упора. Как выяснилось позжее, на самом деле это зависает инициатор при потери связи с сервером. И все процессы пытающиеся подключиться к /dev/daX получают хардлок. Вроде, в каких-то случаях получается снять процес iscontrol, но не всегда.