Кассовый узел на Linux

Большинство современных кассовых узлов делается на базе персонального компьютера и фискального регистратора. Это как минимум удобно для кассира, да и в плане товароучета, гораздо удобнее традиционной «кассы».

В моем случае, список оборудования был такой:
1. Фискальный регистратор FPrint 5200К
2. Клавиатура POSua LPOS -064P
3. Дисплей покупателя Posiflex PD-2800

В качестве монитора используется обычный 15" офисный монитор. Компьютер, для управления всем этим оборудованием, собрал на базе платформы Foxconn NT410-A-B-AE-QB. Это такой неттоп на базе Intel Atom D410 (1.66GHz), без памяти и диска. Память поставил 2Gb, диск 250GB. На самом деле столько памяти и диска не надо, но другого в наличии не было.

Читать дальше →

Простой рецепт устойчивой работы 3G под Linux

Используя 3G модем Huawei E160 (lsub пишет E620) под Linux столкнулся с проблемой неустойчивого подъема соединения после перезагрузки системы. В сообщениях wvdial проблема выглядела так:
--> Sending: ATDT*99#
--> Waiting for carrier.
--> Timed out while dialing.  Trying again.
С настройками wvdial по умолчанию — сообщения шли бесконечно. По всем симптомам — модем «зависал». Проблема решалась просто — ручным кратковременным вытаскиванием модема из USB разъема.
Но мне требовалось более надежное решение, независящее от моего присутствия. Сам рецепт подсказывал мне — надо научиться программно перезапускать модем.

Самый надежный и универсальный способ — управление питанием по шине USB. Выключить и включить питание модема и все — проблема будет решена.
К сожалению, USB-хабы, поддерживающие управление питанием весьма редки. А исследование устройства с точки зрения Linux указывало на отсутствие такой функции на шине USB модема. Поэтому, такой вариант пришлось исключить.

Второй вариант — попробовать AT командой поуправлять модемом. Хотя бы заставить переподключить к GSM/3G сети.
Пришлось заняться поиском документации по AT коммандам.
И они нашлись от первоисточника:
http://www.3gpp.org/ftp/Specs/html-info/27007.htm
Команда, решающая мою проблему выглядит так:
AT+CFUN=1,1
Команда заставляет модем перегрузиться и снова перейти в рабочий режим.
Модем действительно перегрузился, даже находясь в режиме передачи данных — команда была послана через ttyUSB2.
В консоли команда отправляется так:
echo -e "AT+CFUN=1,1\r\n" >/dev/ttyUSB0
Проблема теоретически решена. Осталось автоматизировать процесс.

В /etc/wvdial.conf добавил ограничение на количество попыток соединения:
Dial Attempts = 5
После пяти не успешных попыток дозвониться, wvdial завершит работу.

Теперь обертываю вызов wvdial в скрипт:
rm -f /var/log/3g.log
while true;
do
        echo "wvdial" >>/var/log/3g.log
        wvdial >&/var/log/wvdial.log
        echo "sleep 10" >>/var/log/3g.log
        sleep 10
        echo "reboot modem" >>/var/log/3g.log
        echo -e "AT+CFUN=1,1\r\n" >/dev/ttyUSB0
        echo "sleep 30" >>/var/log/3g.log
        sleep 30
done
Вызов скрипта добавляю в скрипт загрузки системы.
/var/log/wvdial.log — будут писаться события wvdial
/var/log/3g.log — события скрипта
30 секунд оказалось вполне достаточно для перезагрузки модема.

Желаю устойчивого connect'a!

Обработка больших потоков трафика в Linux

В этой заметке я опишу методы увеличения производительности линуксового маршрутизатора. Для меня эта тема стала актуальна, когда проходящий сетевой трафик через один линуксовый маршрутизатор стал достаточно высоким (>150 Мбит/с, > 50 Kpps). Маршрутизатор помимо роутинга еще занимается шейпированием и выступает в качестве файрволла.

Читать дальше →

Squid, Python и external_acl_type

В популярном прокси-сервере Squid реализована замечательная возможность проверять доступ пользователя к Интернет-ресурсам, используя сторонние программы. Отвечает за сие действо директива external_acl_type. С помощью неё становится возможным прикрутить к сквиду свои скрипты, написанные, например, на питоне. Обзор такого скрипта и самого механизма дальше.


Читать дальше →

Linux-vserver или каждому сервису по песочнице

Для целей размещения проектов я применяю такую схему: каждый сервис запускается в изолированной среде: боевой — отдельно, тестовый — отдельно, телефония — отдельно, веб — отдельно. Это снижает риски взлома систем, позволяет бакапить всё и вся одним rsync'ом на соседний сервер по крону, а в случае слёта железа просто поднять на соседнем железе.

Для создания изолированной среды есть два подхода, именуемые VDS (виртуализация аппаратуры) и VPS/jail (виртуализация процессного пространства).

Для создания VDS изоляций применяют XEN, VirtualBox, VMWare и прочие виртуальные машины.
Для создания VPS на linux используется либо linux-vserver либо openvz.

Плюсы VDS: система внутри может быть совершенно любой, можно держать разные версии ядер, можно ставить другую ОС.
Минусы VDS: высокие потери производительности на IO, избыточное потребление CPU и RAM на сервисы, дублирующие запущенные на серверной ОС.

Плюсы VPS: крайне низкая потеря производительности, только на изоляцию, запускаются только те сервисы, которые реально необходимы.
Минусы VPS: можно запустить только linux и ядро будет только той версии, что уже запущено.

Так как мне не нужны разные ОС, то всюду применяю linux-vserver (так уж сложилось исторически, применяю с 2004го года, а openvz вышел в открытый доступ в 2005м).

Ниже я опишу базовые операции по запуску LAMP сервера в изолированном окружении.

Читать дальше →

Закладки каталогов в консоли с Apparix

При первоначальной настройке любого *nix сервера приходится часто перемещаться по каталогам, для правки конфигурационных файлов, проверки результата и так далее. За локальной консолью это не проблема, можно открыть несколько окон терминала и переключаться по мере необходимости, при удаленной настройке так уже не получится. Приходится довольствоваться одной консолью. BASH предоставляет лишь одну помощь — команда cd без аргументов вернет в домашний каталог. Некоторые выкручиваются при помощи псевдонимов (aliases) прописываемых в ~/.bashrc. Например,

alias cdetc=`cd /etc`


Теперь в консоли достаточно набрать cdetc, чтобы перейти в нужный каталог. Конечно это самый простой пример, но принцип понятен. Но у него есть недостаток. Тяжело держать актуальным такой список, ведь сегодня настраиваешь одно, завтра другое. И главное использование псевдонимов на лету не возможно. Ведь его нужно вручную прописать его в ~/.bashrc, затем снова зарегистрироваться в системе. Вот здесь на помощь приходит Apparix, который поможет на лету создавать закладки каталогов и быстро переходить и управлять ими.

Читать дальше →

Простой рецепт устойчивой работы 3G под Linux

Используя 3G модем Huawei E160 (lsub пишет E620) под Linux столкнулся с проблемой неустойчивого подъема соединения после перезагрузки системы. В сообщениях wvdial проблема выглядела так:
--> Sending: ATDT*99#
--> Waiting for carrier.
--> Timed out while dialing.  Trying again.
С настройками wvdial по умолчанию — сообщения шли бесконечно. По всем симптомам — модем «зависал». Проблема решалась просто — ручным кратковременным вытаскиванием модема из USB разъема.
Но мне требовалось более надежное решение, независящее от моего присутствия. Сам рецепт подсказывал мне — надо научиться программно перезапускать модем.

Читать дальше →

Восстановление Express Gate на ноутбуках/нетбуках Asus

Прежде всего расскажу об этой замечательной утилите, как ее называет Asus. Которая на самом деле является маленьким linux-дистрибутивом, отличительной особенностью которого является малое время загрузки 5-8 секунд (Windows 7 ~ 0,5-1 минута). При всем этом присутствует мультимедийный плеер, браузер, скайп и много других вкусностей.

Пруф быстроты Express Gate:



Читать дальше →

TurnKey Linux — сервер для разработчика под ключ

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

Что это и зачем нам это?
Как нам ясно из перевода turnkey linux — это линукс под ключ, т.е. в нашем случае дистрибутив с интегрированным в него каким-либо сервисом или приложением, которое можно развернуть и начать работать за считанные минуты.
Вариантов применения такого дистрибутива великое множество: начиная от простого желания посмотреть то или иное приложение в живую перед развертыванием на боевом сервере и заканчивая использованием его в качестве сервера разработки, обкатки или даже как локального боевого сервера для небольшой компании.
Идея такого продукта не нова и TurnKey Linux не является монополистом на рынке, на хабре уже писали про довольно схожий проект BitNami. Поэтому мне бы хотелось рассказать подробнее про преимущества и возможности TurnKey Linux, так как в своей работе я выбрал именно его.


Читать дальше →

Как сделать офисный сканер сетевым

Лирическое отступление

В одной маленькой организации (~10 компьютеров) было необходимо организовать резервное копирование информации. Для этого было решено установить компьютер с большим жестким диском и Ubuntu внутри, а на компьютеры пользователей – Cobian backup.

Пытливый читатель спросит: «А зачем ты это пишешь, автор? И при чем тут какой-то сканер?»
Дело в том, что в этой организации была только одна возможность отсканировать документ – попросить это сделать счастливого обладателя МФУ Samsung SCX-4200 (название, конечно же, непринципиально, но все произошло именно из-за этого устройства).
Во время установки Ubuntu на «сервер для резервного копирования» и возникла идея: «А если подключить это МФУ сюда, оставить клавиатуру подключенной, и по нажатию определенных клавиш заставить сканер сканировать, сохраняя результат в общую папку? Ведь тогда человек не будет отвлекаться от работы для сканирования чужих документов!»
Конечно же, в первую очередь искались готовые скрипты. Наиболее интересным показался этот – www.opennet.ru/base/sys/net_scanner.txt.html
Однако при ближайшем рассмотрении он оказался не таким уж хорошим, т.к. у меня совсем нет желания перекомпилировать программу для изменения настроек сканера, учить пользователей конвертировать картинки и создавать .pdf-файлы.
Попробую написать свой, хороший…

Читать дальше →