[ОТВЕТИТЬ]
18.02.2010 23:08
NGhost
 
Некоторые люди жалуются, что им не хватает чего-то в клиентской части УКМ, часть этих проблем связана с самой операционной системой (поддержка какого-либо железа, производительность). На мой взгляд дистрибутив ОС (порезаный RedHat) не оптимален и при небольшом вмешательстве можно добавить функционал или избавится от мелких "косячков" типа краха файловой системы. Вот например: задача сбора состояния касс (железо, загрузка ресурсов), времени их работы, банальная проверка ФС не очень то реализуема стандартними средствами, однако может быть легко решена установкой SNMP агента на кассах и небольшого скрипта. Хочется собрать какую-нибудь статистику по этому вопросу.
Быть может следует начать проект по созданию альтернативного дистрибутива UKM-Client?
Конечно, я не имею ввиду декомпиляцию программных продуктов С+ - занятие неблагодарное и наказуемое.
Однако, никто не запрещает и не может запретить ставить эти продукты на любой другой дистрибутив Linux, а также изменять этот дистрибутив по своему усмотрению.
23.02.2010 18:37
Onesoft
 
Цитата:
NGhost Некоторые люди жалуются, что им не хватает чего-то в клиентской части УКМ, часть этих проблем связана с самой операционной системой (поддержка какого-либо железа, производительность). На мой взгляд дистрибутив ОС (порезаный RedHat) не оптимален и при небольшом вмешательстве можно добавить функционал или избавится от мелких "косячков" типа краха файловой системы. Вот например: задача сбора состояния касс (железо, загрузка ресурсов), времени их работы, банальная проверка ФС не очень то реализуема стандартними средствами, однако может быть легко решена установкой SNMP агента на кассах и небольшого скрипта. Хочется собрать какую-нибудь статистику по этому вопросу.
Быть может следует начать проект по созданию альтернативного дистрибутива UKM-Client?
Конечно, я не имею ввиду декомпиляцию программных продуктов С+ - занятие неблагодарное и наказуемое.
Однако, никто не запрещает и не может запретить ставить эти продукты на любой другой дистрибутив Linux, а также изменять этот дистрибутив по своему усмотрению.
Потом в техподдержке сервис плюса вам скажут: негарантийный случай, со всеми проблемами (причём - не только на стороне клиента) разбирайтесь сами. Связано с тем, что каждая используемая версия УКМ сильно зависит от ядра и окружения ОС, и даже если на функционировании УКМ это не скажется пагубно, то при обновлении гарантированно могут возникнуть неразрешимые трудности. Достаточно часто при обновлении УКМ обновляется ядро линукса, обновляется мускул, апач и пхп. Для их обновления могут понадобиться такие средства ОС, которые для пробития чеков не нужны. Так что решайте, что вам дороже.
25.02.2010 16:36
NGhost
 
Ну ни так уж сильно и зависит.
Я потому и писал о "небольшой" доработке. Сами посудите - чем SNMP агент или немного измененные стартовые скрипты могут помешать обновлению. Не далее как на прошлой неделе успешно заработала последняя версия UPOS (клиент Сбербанк) на 42 версии, причем изменений в саму ОС внесено не было. По крону запускается проверка бд касс, SNMP агент отсылает trap`ы (ловит их zabbix) при окончании бумаги в ФР и прочих радостях типа отключения питания сканера ШК. Техподдержка при звонке из магазина уже приблизительно знает в чем причина, а иногда сама звонит еще до переполоха кассиров. Клиент доволен как кот, который объелся карасями.
Причем все изменения на кассе откатываются одной командой (делал на случай обращения в С+). На следующей неделе проверю как проходит обновление.
25.02.2010 16:52
NGhost
 
Для примера еще одна полезная штука - запрос IP адреса при заливке кассы изменения в файле /etc/rc.sysinit образа ukmrd (при обновлении этот файл перезаписывается).

Код:
#SET_IP BLOCK
if [ "$PROMPT_FOR_IPADDRESS" = "Y" -o "$PROMPT_FOR_IPADDRESS" = "y" ];
then
cp /etc/install.cfg /etc/install.grep
grep -v -e IPADDRESS -e NETMASK /etc/install.grep > /etc/install.cfg
rm /etc/install.grep
echo "=== Network configuration  ==="
echo
echo "Manual network setup selected"
echo "please set IP address."
echo
while :
do
read -p "Enter IP address: " man_ip
read -p "Enter Network mask: " man_mask
read -p "Enter default gate: " man_gate
read -p "DNS1: " man_dns1
read -p "DNS2: " man_dns2
read -p "Enter SERVER IP ADDRESS: " man_srv

echo
echo "==========================================="
echo "Network params are:"
echo "IP=$man_ip"
echo "MASK=$man_mask"
echo "Gate=$man_gate"
echo "DNS1=$man_dns1"
echo "DNS2=$man_dns2"
echo "SERVER ip address=$man_srv"
echo "==========================================="
echo
read -p "Is it correct (Yes-[Enter]/No-[n])?:" ip_correct

if [ -z "$ip_correct" -o "$ip_correct" = "y" ]; then
IPADDRESS=$man_ip
NETMASK=$man_mask
GW_IPADDRESS=$man_gate
DNS_SERVER_1_IPADDRESS=$man_dns1
DNS_SERVER_2_IPADDRESS=$man_dns2
SMB_SERVER_IPADDRESS=$man_srv
echo "Exporting variables."
export -p IPADDRESS GW_IPADDRESS NETMASK
export -p DNS_SERVER_1_IPADDRESS DNS_SERVER_2_IPADDRESS SMB_SERVER_IPADDRESS
echo
echo "Configuration set."
break
fi
done
fi

## END
Т.е. Если в install.cfg будет строчка PROMPT_FOR_IPADDRESS=Y, то при заливке касса попросит вручную указать IP адрес и прочие параметры - удобно при заливке 5-10 касс одновременно.
25.02.2010 17:04
Mtirt
 
Цитата:
NGhost Для примера еще одна полезная штука - запрос IP адреса при заливке кассы изменения в файле /etc/rc.sysinit образа ukmrd (при обновлении этот файл перезаписывается).

Код:
#SET_IP BLOCK
if [ "$PROMPT_FOR_IPADDRESS" = "Y" -o "$PROMPT_FOR_IPADDRESS" = "y" ];
then
cp /etc/install.cfg /etc/install.grep
grep -v -e IPADDRESS -e NETMASK /etc/install.grep > /etc/install.cfg
rm /etc/install.grep
echo "=== Network configuration  ==="
echo
echo "Manual network setup selected"
echo "please set IP address."
echo
while :
do
read -p "Enter IP address: " man_ip
read -p "Enter Network mask: " man_mask
read -p "Enter default gate: " man_gate
read -p "DNS1: " man_dns1
read -p "DNS2: " man_dns2
read -p "Enter SERVER IP ADDRESS: " man_srv

echo
echo "==========================================="
echo "Network params are:"
echo "IP=$man_ip"
echo "MASK=$man_mask"
echo "Gate=$man_gate"
echo "DNS1=$man_dns1"
echo "DNS2=$man_dns2"
echo "SERVER ip address=$man_srv"
echo "==========================================="
echo
read -p "Is it correct (Yes-[Enter]/No-[n])?:" ip_correct

if [ -z "$ip_correct" -o "$ip_correct" = "y" ]; then
IPADDRESS=$man_ip
NETMASK=$man_mask
GW_IPADDRESS=$man_gate
DNS_SERVER_1_IPADDRESS=$man_dns1
DNS_SERVER_2_IPADDRESS=$man_dns2
SMB_SERVER_IPADDRESS=$man_srv
echo "Exporting variables."
export -p IPADDRESS GW_IPADDRESS NETMASK
export -p DNS_SERVER_1_IPADDRESS DNS_SERVER_2_IPADDRESS SMB_SERVER_IPADDRESS
echo
echo "Configuration set."
break
fi
done
fi

## END
Т.е. Если в install.cfg будет строчка PROMPT_FOR_IPADDRESS=Y, то при заливке касса попросит вручную указать IP адрес и прочие параметры - удобно при заливке 5-10 касс одновременно.
Не помню, с какой версии, но в самом УКМ4 оно так и работает - запрашивает ip-адрес при установке. Перед НГ ставила 12 касс подряд на версии 47.
25.02.2010 18:49
Onesoft
 
Цитата:
Mtirt Не помню, с какой версии, но в самом УКМ4 оно так и работает - запрашивает ip-адрес при установке. Перед НГ ставила 12 касс подряд на версии 47.
Я застал ещё 26-ую версию - и там тоже это уже было.
25.02.2010 19:04
Onesoft
 
Цитата:
NGhost Ну ни так уж сильно и зависит.
Я потому и писал о "небольшой" доработке.
На тот момент не усмотрел я понятия "небольшая доработка" за фразами "неоптимальный порезанный RedHat" и "любой другой дистрибутив Linux"

Цитата:
NGhost Сами посудите - чем SNMP агент
Главное - чтобы не влияло на функциональность. Однако, косяки могут вылезти в самых неожиданных местах...

Цитата:
NGhost успешно заработала последняя версия UPOS (клиент Сбербанк) на 42 версии
Линуксовый клиент sb_pilot поддержан с 44й версии.

Цитата:
NGhost По крону запускается проверка бд касс, SNMP агент отсылает trap`ы (ловит их zabbix) при окончании бумаги в ФР и прочих радостях типа отключения питания сканера ШК
А питание сканера ШК как проверяете? УКМ не ждёт от него постоянного подключения и при разрыве связи/пропадении питания ошибки не возникает, в отличие от ФР, клавиатуры или дисплея покупателя..
26.02.2010 14:55
NGhost
 
Самый простой вариант - /proc/tty/driver/serial
26.02.2010 14:57
NGhost
 
Цитата:
Mtirt Не помню, с какой версии, но в самом УКМ4 оно так и работает - запрашивает ip-адрес при установке. Перед НГ ставила 12 касс подряд на версии 47.
Проблема в том, что у клиента для которого писался скрипт 42 версия, а в ней такого функционала нет.
26.02.2010 23:32
Onesoft
 
Цитата:
NGhost Проблема в том, что у клиента для которого писался скрипт 42 версия, а в ней такого функционала нет.
Утверждение неверно: вот файл install.cfg.skel, так называемый скелет, на основе которого создаётся install.cfg на флешке/дискете, достал я его из дистрибутива 42sp6 (уверяю тебя, вплоть до 26 версии было так же - за более ранние версии утвержать не стану, с ними в С+ я уже не работал):

#!/bin/sh

SMB_SHARE=//SMB_SERVER/SHARE_NAME
SMB_SHARE_DIR=
SMB_USER=username
SMB_PASSWORD=password
SMB_WORKGROUP=WORKGROUP

IPADDRESS=
NETMASK=
GW_IPADDRESS=
SMB_SERVER_IPADDRESS=
DNS_SERVER_1_IPADDRESS=
DNS_SERVER_2_IPADDRESS=
PROMPT_FOR_IPADDRESS=

INSTALL_CLI=Y
INSTALL_SRV=N
AUTOSTART=Y
SRV_NAME=UKMSERVER_NAME
SRV_CODE=0001

# ! WARNING ! DON'T EDIT PARAMETERS BELOW THIS LINE
SCRIPTS_FILE=scripts.tar.gz
E2TOOLS_FILE=e2tools.tar.gz
UKM_BOOT_FS_FILE=ukm-boot.tar.gz
UKM_ROOT_FS_FILE=ukm-root.tar.gz
UKM_KMODS_FILE=ukm-kmods.tgz
UKM_SOFT=ukm-cli.tar.gz
XWIN_FILE=xwin.tgz

STAGE2_FILE=
SAVE_LOG=Y
SRV_SOFT=ukm-srv.tgz

KERNEL_BOOT_PARAMS=

export KERNEL_BOOT_PARAMS
export UKM_KMODS_FILE SMB_SHARE SMB_USER SMB_WORKGROUP SMB_PASSWORD
export SMB_SERVER_IPADDRESS IPADDRESS GW_IPADDRESS NETMASK
export DNS_SERVER_1_IPADDRESS DNS_SERVER_2_IPADDRESS PROMPT_FOR_IPADDRESS
export SCRIPTS_FILE E2TOOLS_FILE UKM_BOOT_FS_FILE UKM_ROOT_FS_FILE UKM_SOFT
export STAGE2_FILE AUTOSTART SAVE_LOG
export INSTALL_CLI INSTALL_SRV XWIN_FILE
export SRV_SOFT SRV_NAME SRV_CODE

Если в строке "PROMPT_FOR_IPADDRESS=" добавить "Y", то заливка терминала бует сопровождаться запросом IP-адреса.
01.03.2010 17:21
NGhost
 
Цитата:
Onesoft Если в строке "PROMPT_FOR_IPADDRESS=" добавить "Y", то заливка терминала бует сопровождаться запросом IP-адреса.
Если в строке "PROMPT_FOR_IPADDRESS=" добавить "Y", то заливка терминала бует сопровождаться вылетов скрипта в шелл.
02.03.2010 10:41
Onesoft
 
Цитата:
NGhost Если в строке "PROMPT_FOR_IPADDRESS=" добавить "Y", то заливка терминала бует сопровождаться вылетов скрипта в шелл.
Значит, надо освежить файлы в папке %programfiles%\ukmclient, возможно, там остались "хвосты" предыдущих версий, не подправленные при обновлении на более новые (хотя такое наблюдалось в версиях ранее 42-ой, в которой это было налажено).

Вот скриншот установки клиента 42sp6 на этапе ввода запрашиваемого IP-адреса:


Изначально был задан адрес 192.168.138.4, его инталлятор терминала использует при начальной заливке терминала. Затем инсталлятор запросил IP адрес, я ввёл 192.168.138.25, инсталлятор запросил "Is it correct?", я сделал вид, что ошибся, сказал "n" (годится любой символ кроме трёх утвердительных "enter", "y" или "Y") и ввёл адрес 192.168.138.125. Затем сказал "y" и терминал успешно дозалился до конца.
И вот лог первой загрузки терминала:
Цитата:
10:38:21: INFO:Global:---------- Client v.42 Service Pack 6 started -----------
10:38:21: INFO:sound#0x916a7f0:started
10:38:21: INFO:NTLP#0x9170640:started
10:38:21: INFO:Connector to server#0x9170a18:started
10:38:21: INFO:NTLP#0x9170640:Socket 6 connected to 192.168.138.21: new channel 152480208 created
10:38:21: WARNING:main:Успешно найден
10:38:21: INFO:main:Подождите
10:38:31: WARNING:debug#ukm-client.cpp(323) StartNetwork:St13runtime_error( Wait replication fail: transaction failed )
10:38:31: INFO:main:ОШИБКА
10:38:31: INFO:hardware:initializing
10:38:31: FATAL:diag:10018 Неверная конфигурация оборудования. Основной принтер не найден
10:38:31: INFO:main:terminating global task's
10:38:31: INFO:hardware:terminating poll task's
10:38:31: INFO:sound#0x916a7f0:Pending terminate request received
10:38:31: INFO:NTLP#0x9170640:Pending terminate request received
10:38:31: INFO:Connector to server#0x9170a18:Pending terminate request received
10:38:31: INFO:sound#0x916a7f0:finished
10:38:31: INFO:Connector to server#0x9170a18:finished
10:38:36: INFO:NTLP#0x9170640:Channel 152480208 closed
10:38:36: WARNING:PROTOCOL:ChannelDied
10:38:36: INFO:NTLP#0x9170640:finished
10:38:36: INFO:NTLP#0x9170640:Pending terminate request received
(кассовую линейку и конфигурации уж не стал настраивать)
Для убедительности вот ещё скриншот (SSH-сессия с этим терминалом):
02.03.2010 16:41
NGhost
 
Цитата:
Onesoft Изначально был задан адрес 192.168.138.4, его инталлятор терминала использует при начальной заливке терминала. Затем инсталлятор запросил IP адрес, я ввёл 192.168.138.25, инсталлятор запросил "Is it correct?", я сделал вид, что ошибся, сказал "n" (годится любой символ кроме трёх утвердительных "enter", "y" или "Y") и ввёл адрес 192.168.138.125. Затем сказал "y" и терминал успешно дозалился до конца.
Вот в этом и проблема. Идея была в том, чтобы создать универсальный носитель (флешка, дискетка), с которым малоквалифицированный инженер тех. службы мог бы разъезжать по точкам и на месте заливать кассы. Лазить по этой флешке ему крайне не рекомендуется. При заливке 2 и более касс 1 IP для их загрузки использовать не удобно.

По дефолту если не выставлена переменная $IPADDRESS, скрипт установки вываливается в шелл, чем очень удивляет вышеупомянутого инженера тех. службы.

Но разговор не об этом, предлагаю вернуться к изначальной теме.
02.03.2010 23:26
Onesoft
 
Цитата:
NGhost Вот в этом и проблема. Идея была в том, чтобы создать универсальный носитель (флешка, дискетка), с которым малоквалифицированный инженер тех. службы мог бы разъезжать по точкам и на месте заливать кассы. Лазить по этой флешке ему крайне не рекомендуется. При заливке 2 и более касс 1 IP для их загрузки использовать не удобно.

По дефолту если не выставлена переменная $IPADDRESS, скрипт установки вываливается в шелл, чем очень удивляет вышеупомянутого инженера тех. службы.
А зачем по флешке лазить-то? Один раз указал $IPADDRESS, по которому инсталлятор терминала заливает файлы, потом вбил другой IP адрес, по которому касса дальше будет работать - и дальше пошёл. Всё равно же ведь надо руками вбивать адрес. Тем более, что это не шелл, а самый, что ни на есть, интерактивный режим, только без рамок, кнопок и теней.

Цитата:
NGhost Но разговор не об этом, предлагаю вернуться к изначальной теме.
На мой взгляд, наш спор про IP адрес как раз и свидетельствует в пользу того, что не стоит, наверное, вмешиваться в ОС и прочий функционал, не зная всех особенностей ОС и функционала кассовой системы: малая беда, если будет выполнена бесполезная работа, но гораздо большая беда, если эта работа ещё и негативно отразится на функционировании не только ПО, но и на корректном исполнении бизнес-процессов. Ещё один довод в пользу этого: линуксовый модуль sb_pilot СБРФ был готов ещё задолго до 44 версии, однако пока он не был оттестирован как следует, зелёный свет ему не давали. Потому что в таких вещах нужно до конца экспериментально удостовериться в том, что в результате любого сбоя система окажется устойчивой: деньги будут переведены куда следует, покупатель не окажется обманутым, а безопасность платежей не обнаружит уязвимостей. И даже после выхода 44й версии работу с модулем разработчики УКМ 4.0 продолжали шлифовать. Так что вот такое вот моё личное мнение.
А вот что бы я стал делать: простым копированием готовых исполняемых файлов или скриптов, запускаемых по cron или даже при помощи программ plink и pscp периодически мониторить жизненно важные компоненты системы, такие как, например, состояние жёсткого диска (smartctl) и лог MySQL на предмет наличия в нём ошибок. Ну или - максимум - простой скриптовый демон, который так же мониторил бы логи ukmclient'а, не отбирая для своей задачи ресурсов, ведь зачастую оборудованием кассовым располагаем не самым мощным... Для нашей сети магазинов я написал скрипт, который, подключившись к серверу, определит IP адреса касс магазина и в реальном времени откроет в PuTTY все их логи, буквально одним кликом мыши. По звонку из магазина я даже могу не спрашивать, на какой именно кассе проблема. Этот скрипт + средства мониторинга HDD S.M.A.R.T и MySQL = вполне достаточно для обеспечения стабильной работы касс и быстрой диагностики и решения проблем. Кроме того, начиная с 43й или 44й некоторые средства контроля ресурсов касс уже реализованы, а именно - на этапе загрузки кассы проверяется и ремонтируется БД, если касса перед этим выключалась "грубо", а также отключение автозапуска (ukmoff) ukmclient при циклическом reboot'е терминала вследствие фатальной ошибки 139 (чтобы можно было войти удалённо по SSH на терминал и произвести ремонтно-восстановительные работы). Эти две доработки были инициированы мною ещё в бытность руководителем группы внедрения УКМ 4.0 в С+. Вы же, по-момему, сервисная организация? Так обратитесь лучше в С+ с предложением о доработке, расскажите своё видение её решения, договоритесь с менеджерами о взаимовыгодном сотрудничестве, от этого должны только выиграть все! :drink_mini:
10.03.2010 20:06
NGhost
 
Цитата:
Onesoft Так обратитесь лучше в С+ с предложением о доработке, расскажите своё видение её решения, договоритесь с менеджерами о взаимовыгодном сотрудничестве, от этого должны только выиграть все! :drink_mini:
Хотя С+ и стал в последнее время поворачиваться лицом к клиенту, поворота пока не достаточно. А уж к интеграторам, я думаю, не начнет поворачиваться еще долго.
Последние переговоры от имени клиента оставили вместо "взаимовыгодного сотрудничества" какой-то неприятный осадок. В итоге клиент, проголосовал своим рублем за мелкого интегратора, а не С+ (имеются в виду работы по обновлению УКМ). Вот так.
Опции темы


Часовой пояс GMT +3, время: 23:42.

 

Форум сделан на основе vBulletin®
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd. Перевод: zCarot и OlegON
В случае заимствования информации гипертекстовая индексируемая ссылка на Форум обязательна.