Архив рубрики: linux

Следим за временем оплаты доменов с помощью zabbix

Очень часто любит народ забывать оплачивать домены. А когда у тебя на поддержке sms-шлюз и сервис мобильных платежей, то это плохо. Администратор не увидел письмо, владелец домена пропустил уведомление и т.д. Все критические параметры должны мониторится.

Я искал готовые решения, но они ужасны. Нашел на perl с зависимостями или сложное решение .  Доменов  мало (всего 5). В итоге я решил написать своё компактное решение.

Читать далее

HOWTO: ubuntu 14.04 установка mate 1.8

Решил я сделать старую добрую gnome2 убунту. Для этого нам потребуется: дистрибутив ubuntu-server 14.04 (под нашу архитектуру), прямые руки и немного терпения.

Шаг 1:
Ставим ubuntu server как нам хочется, останавливаться на этом не буду.

Шаг2:
Добавляем репазитарий с Mate 1.8

sudo add-apt-repository "deb http://repo.mate-desktop.org/archive/1.8/ubuntu/ trusty main"

Шаг3:
Обновляем список пакетов и ставим mate Читать далее

Внедрение Linux в госучреждениях Мюнхена позволило сэкономить 10 млн евро

Исследование экономической эффективности перехода государственных учреждений Мюнхена на Linux и свободное программное обеспечение показало, что данная инициатива позволила сэкономить городу от 8 до 12.8 млн евро бюджетных средств. Результаты сравнительного расчёта бюджета, показавшие столь большую экономию средств, были оглашены независимой группой Free Voters на состоявшемся несколько дней назад заседании городского комитета по информационным технологиям.

Новость целиком

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

Про патч sched_autogroup для linux

В месте с общей волной решил попробовать «killer feature» патч, про который  прочитал тут. С новым ядром 2.6.36 возникли проблемы — ядро собралось и загрузилось, но установить nvidia драйвера не удалось.  Однако, нашел на http://pavlinux.ru/ патч переделанный под ядро 2.6.35.8 http://pavlinux.ru/krnl/sched_autogroup-2.6.35.8.patch.bz2  Поставил. Все работает. Драйвера nvidia ставятся и работают.

Впечатления не однозначные. Переключение между окнами стало моментальное. Особенно стало комфортно работать с виртуальной машиной — переключение между виртуальной машиной и программами происходит быстро. Но, те же виртуальные машины стали чуть дольше запускаться. Так же запускаются медленнее программы из-за того, что отсутствие BFS  патч.

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

Собираем ядро 2.6.34 с патчем bfs в Debian Squeeze

Недавно спалил материнскую плату и процессор (да же не знаю дело в моих руках или оно само). Купил новые материнскую плату процессор, и как водится, с моим старым за оптимизированным ядром многое не работало. Скачал ядро 2.6.34, но по инструкциям оно просто не собиралось — выскакивало куча ошибок, вооружившись google я начал искать по иностранным форумам, ну и нашел (собирать лучше из под официального универсального ядра из репазитария)

  • Переходим в  нужную директорию cd /usr/src/
  • Качаем исходники wget http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.34.tar.bz2
  • Распаковываем их tar xvjf linux-2.6.34.tar.bz2
  • Переходим в папку с исходниками cd linux-2.6.34
  • Качаем патч bfs к ядру с сайта разработчика wget http://ck.kolivas.org/patches/bfs/2.6.34-sched-bfs-318.patch
  • Патчим ядро patch -p1 < 2.6.34-sched-bfs-318.patch
  • Устанавливаем нужные пакеты для сборки ядра apt-get install kernel-package libncurses5-dev fakeroot wget bzip2 build-essential
  • Теперь генерируем новую конфигурацию ядра на основе существующей cp /boot/config-`uname -r` ./.config
  • Конфигурируем ядро make menuconfig
  • Обязательно изменяем настройки (остальное по вкусу)

Processor type and features -> Timer frequency устанавливаем в 1000Hz
Processor type and features -> Tickless System (Dynamic Ticks) отключаем
Processor type and features -> Preemption Model -> Preemptible kernel (Low latency desktop)

  • Затем make-kpkg clean
  • И тут маленький изворот отличающий от других инструкций gedit ./Documentation/lguest/Makefile и приводим к виду:
  • # This creates the demonstration utility «lguest» which runs a Linux guest.
    CFLAGS:=-m32 -Wall -Wmissing-declarations -Wmissing-prototypes -O3 -I../../include -I../../arch/x86/include -U_FORTIFY_SOURCE

    all:

    clean:
    rm -f lguest

  • Ну и собираем ядро и заголовочные файлы fakeroot make-kpkg —initrd —append-to-version=-bfs_my kernel_image kernel_headers
  • На этапе формирования пакетов оно ругнется и вывалится с ошибкой на имя сборки, тогда делаем: cp include/generated/utsrelease.h include/linux/ и заново запускаем fakeroot make-kpkg —initrd —append-to-version=-bfs_my kernel_image kernel_headers
  • Если все прошло успешно то в /usr/src/ появится 2 новых пакета — установите их dpkg -i linux-*.deb

Эта инструкция составлена по кучи других и что я брал и где я уже не помню, т.к. пишу уже с собранного ядра по история из терминала. Удачной вам ядерной физики 🙂

Собираем ядро на Debian Squeeze с BFS

Недавно тут захотелось свежих программ и было решено поставить Debian Squeeze вместо Lenny. Сказано — сделано. Только вот  ядро меня не устраивало — почему то ReiserFS не хотел монтироваться, скорость работы (мои сборки были с BFS и переход с него обратно очень ощутим). Обычно я пользуюсь вот этим и этим руководством, но по ним у меня ничего не получалось. Не создавался initrd, и ядрышко (linux-2.6.32.9) выдавало kernel panic not syncing vfs unable to mount root fs on unknown-block. По этому запросу выдавало много что, но я предположил что налажали в скриптах и оказался прав. Вот бага.

Решение простое — берем пакет initramfs-tools из репазитраия Lenny, а заодно и kernel-package. И еще я поставил grub от lenny — мне просто не нравится новая версия, но стоит описать так как это может на что-нибудь повлиять. Правим конфиг /etc/apt/preferences что бы наши усилия не уничтожились первым обновлением

Package: kernel-package
Pin: version 11.0*
Pin-Priority: 989

Package: grub-common
Pin: version 1.96*
Pin-Priority: 989

Package: grub
Pin: version 0.97-47*
Pin-Priority: 989

Package: initramfs-tools
Pin: version 0.92*
Pin-Priority: 989

Конечно это не true но пофиг. Искать баги в скриптах, или пытаться разобраться в коментах к багу мне не хотелось. Казалось вот оно счастье, но нет собранное ядро теперь нам будет говорить (а вот это не у всех и не всегда) waint root file system. И все дело в кривом конфиге идущим с текущим ядром. Не делайте cp /boot/config-`uname -r` /usr/src/linux/.config Посидите вечерком над make menuconfig или make gconfig (по вкусу) и составьте нормальный конфиг для себя, дальше его можно будет перетаскивать из ядра в ядро через oldconfig.

Описывать все по шагам не буду, все описано в статьях по 2 верхним ссылкам и нечего плодить сущности.

Работает — сломай что бы не скучно было или ставим debian squeeze

Стоял у меня Debian Lenny еще с того времени, когда он был еще testing. Все было прекрасно кроме устаревших пакетов. И потянуло меня обновится на Debian Squeeze.

Скачал образ, записал на диск (да ставил заново ибо слишком много накопилось не нужных программ и библиотек). Вставил диск и понеслось. Графического исталятора нет (ну и фиг с ним, всеравно не пользуюсь). При разметке дисков нельзя было работать с ReiserFS (а у меня в нем /home  и / я то же в нем обычно держу), ладно думаю попробую ext4 — фиг. Система просто не ставится если корень в ext4. Ладно выбрал ext3. Поставил. По умолчанию ставится grub2 — страшный и не понятный и документации мало или практически нет. Разделы с ReiserFS удалось подцепить только на ядре 2.6.30. С ядром по умолчанию 2.6.32 ReiserFS не хочет дружить.

NetworkManager конечно тут же определили мою локалку и настроил ее сам, но вот pppoe соединение я так и не смог в нем поднять. Поэтому он был удален, а сеть по старинке была настроена через /etc/network/interfaces   и там все не гладко прошло. Раньше у меня up route add было в конце конфига и оно работало теперь надо это писать после каждого интерфейса по отдельности (ну или я не так понял, но хотя бы работает).

И самое не понятное — не собирает initrd у нового ядра (делал всегда по инструкции). Вот переход с обычного ядра на свое с BFS особо не заметен, нов от обратно…. кажется все таким мееедлееенным.

Вообщем пока Squeeze сырой.

Делаем автоматический бекап базы keepassx на флешку в linux

Все мои пароли хранятся и генерируются с помощью программы KeePassX. По понятным причинам хочется, что бы делался бекап и причем автоматически. Раньше я решал эту проблему dropbox, но ситуация поменялась и я больше не мог делать online синхронизацию. Пришлось носить portable версию KeePassX на флешке, а постоянный бекап просто забываешь. Это меня и подвигло к автоматизации этого процесса.

Есть 2 способа — расковырять скрипты gnome-volume-manager но он просто непонятен (а я как бы завязал и на трезвую голову в таком не разобраться) или через pamusb.


Pluggable Authentication Modules (PAM) — Подключаемые Модули Аутентификации — библиотека, предоставляющая API для управления методами аутентификации в Unix-подобных операционных системах. Позволяет программам, которые используют аутентификацию, быть независимыми от схемы аутентификации.

Собственное, как происходит аутентификация и настройка модуля можно прочитать здесь или тут. Добавляем нужную нам флешку и пользователя через pamusb-conf и правим конфиг /etc/pamusb.conf

Во первых:
Должен присутсвовать и должен быть раскоментирован (в debain он по умолчания есть но закомментирован).

<service id=»pamusb-agent»>
<option name=»one_time_pad»>false</option>
</service>

Во вторых:

keepassx:
<user id=»alex»>
<device>myflash</device>
<agent event=»unlock»>cp -u /home/alex/key/pass.kdb /media/MyBigFlash/KeePassX/</agent>
</user>

Надо добавить в секцию

userid — пользователь, которого мы добавили в pamusb-conf.
devise — имя флешки, которое мы задали определенной флешки в pamusb-conf
agent event=»unlock» — выполнить команду при подключении флешки.
После чего запустить pamusb-agent для проверки правильности написания конфига. После удачных опытов добавляем pamusb-agent —daemon в автозагрузку.
Теперь нам достаточно лишь вставить флешку в ПК, что на нее залилась более новая бд KeePassX.
p.s. Флешку надо отмонтировать, иначе база может не обновится, это связано с тем что обычно в linux информация не сразу заливается на флешку.

640Кб должно быть достаточно для каждого или делаем меленькими отсканенные методички

Цитату в заголовке приписываю Билл Гейтсу, он или не он ее произнес — не важно, речь пойдет не о том. Частенько нам приходится сканировать документы, книги, а нам студентам методички (все дальнейшее описание будет вестись на основе моего опыта, полученного на сканирование методичек). Хорошо отсканенную методичку, иногда, полезно при себе иметь, если и есть бумажная версия (методичку можно забыть, не взять — зачем тащить из-за методички пакет/сумку если только методичка сегодня будет и нужна). Хорошо отсканенная методичка это не та, которая будет черт знает сколько весить, а та которой будет удобно пользоваться.

И так мы имеет обычный ПК с Debian Lenny на борту, сканер canon lide 25 ну и набор ПО (gscan2pdf, scantailor, Djvu Solo 3.1 в wine ), ну и собственно методичку по эконометрике.

Сканер настроен поэтому приступим сразу к сканированию. Запускаем программу gscan2pdf и сканируем методичку в разворот. Первые страницы в режиме «оттенки серого», т.к. обложка напечатана на цветной бумаге, остальные в «штриховая графика» с разрешением 300 dpi. (разрешение должно быть одним на весь документ или потом замучаетесь!) Закончив сканирование рекомендую развернуть страницы в альбомную ориентацию и сохранить результат в tiff в отдельную папку. Получился файл размером 22 Мб — многовато для методички, да и читать такое трудновато

Надо обработать! Конечно можно FineReader-ом (лезть под винду) или вручную. Но была найдена замечательная программа scantailor . Открываем, подгружаем наш файл tiff. Можно исправить ориентацию (но мы это уже сделали) поэтому начинаем разрезку. Запускаем ее в автоматическом режиме (не правильное исправим потом).
 
 
Бегло просматриваем и исправляем вручную, где программа накосячила.  Следующий пунк компенсация наклона — нужен в основном для книг или для криворуких 🙂 Нам не надо — пропускаем.

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

После исправления косяков, а их было мало, переходим к следующему этапу. В «Макете страниц» нам надо задать макет страниц — логично 🙂 Определяем поля, выравниваем страницы по размеру, естественно в автоматическом режиме. И мы в финале!
 
 
На последнем этапе «Вывод» задаем dpi у нас 300. Режим -Черно-белый, удалять пятна оставим по дефолту. И запускам автоматический режим 🙂 Это самая ресурсоёмкая операция — большая нагрузка на процессор, так что запускаем и идем пить чай (хотя для методички хватило времени что б только поставить чайник).
 
В указанной для выхода получаем набор tiff пронумерованных, очищенных. Получили 39 tiff общим объемом 2,9 мб — чувствуете разницу? 
Отдельные страницы это хорошо, но нам нужно это все собрать. Основных вариантов 2 — pdf или djvu. Т.к. я за правильное использование форматов, то выбираем djvu. В интернете куча скриптом и рецептов, как собрать это все в 1 документ, но не один мне не понравился (найдете что-то удобное и гибкое для linux флаг вам в руки). Поэтому я установи Djvu Solo 3.1 в wine.
Добавляем все нужные нам изображения (в начале или в конце может быть пустое изображения от несуществующей половинки обложки). 

И завершающий этап — жмем FileEncode As  Djvu выбираем Bundled и задаем куда мы хотим сохранить и под каким названием. После подтверждения появится диалог:

Указываем разрешение (ну больше 300 явно не стоит, всеравно мы сканили с 300), можно указать 200. Указываем Bitonal (2 тоновый или русским языком говоря черно-белый) и жмем заветную кнопку OK.
В итоге получаем файл djvu, у меня размером в 392,2 КБ. Кстати, если  мы бы сжали в djvu тот первый отсканированный вариант, то объем  получился бы от 1 до 2 мб, что то же не плохо.
 
 
У нас теперь методичка, которую приятно просматривать, маленького размера в читаемом виде. Это не распознанный текст, но всеравно очень даже.
p.s. я буду рад, если моя заметка поможет сделать хоть на 1 книгу меньше, которая криво отсканена в pdf и занимающую 90 мб

автоматизация в учебе

Толпы студентов у доски с расписанием — у кого то это вызывает приступы ностальгии, у меня отвращение. Почти у каждого института есть свои сайт, где можно скачать расписание, посмотреть полезную информация. У некоторых это сделано хорошо, у некоторых плохо.
Мой институт имеет 2 сайта один так себе, другой ужасный 🙁 Главный immf.ru много полезной информации, в удобном виде, но часть информации закрыта — просят получить логин/пароль в каком то кабинете. Другой my.immf.ru страшный и ужасный — сайт студентов, лажа полная, но все открыто. Открыто и расписание (не понимаю зачем закрывать доступ к расписанию на главном), но часто забывают обновить.
Но одногрупник нашел маленькую недоработку — можно ходить по директориям http://www.immf.ru/download/  . И конечно же там в открытом виде лежит расписание http://www.immf.ru/download/Raspisanie/   в pdf файлах 🙂
Каждый раз вбивать строку в браузер и смотреть, не обновилось ли расписание, мне лень, решил написать скрипт (сначала просто он качал затем и научился уведомлять). Конечно, все будет выполнено средствами linux
Сам скриптик

#!/bin/bash
wget -N --output-file=/tmp/log_wget.txt -P /home/alex/  http://www.immf.ru/download/Raspisanie/shedule_sokr.pdf
if grep -q 'сохранён' /tmp/log_wget.txt
then perl ./jabberMS
fi

Wget мы качаем файлик расписания, если он новее чем у нас на в указанной директории и пишет лог. Дальше grep мы проверяем лог на слово сохранен (если файл не новее то этого слова там не будет). И если условие выполняется, то мы можем отправлять сообщение (файл уже у нас). Дело в том, что я нашел 2 способа программно отправить сообщения в jabber — sendxmpp и скрипт на perl. Заставить работать sendxmpp я так и не смог. Поэтому пришлось воспользоваться скриптом

#!/usr/bin/perl

use Net::XMPP;
use locale;
use utf8;
my $c=new Net::XMPP::Client();
Connect(hostname=>"наш сервер с которого отправляем");
AuthSend(
username=>"логин",
password=>"пароль",
resource=>"Perl");
my $m=new Net::XMPP::Message();
$m->SetMessage(
to=>"hardworm@jabber.ru",
from=>"hardworm@jabber.ru",
body=>"Raspisanie obnovilos");
$c->Send($m);
$c->Disconnect();

Ну и в конце скрипта написано кому, от кого ну и само сообщение. Загоняем в cron наш скрипт, допустим выполняем его каждые 3 часа.

Планируется, всетаки, заставить работать sendxmpp. Возможно, это все сделано все не красиво с программерской точки зрения, зато работает 🙂