19 нояб. 2016 г.

Raspbian Midnight Commander кракозябры

Нужно поменять locale в /etc/default/locale
c en_GB.UTF-8 на ru_RU.UTF-8
и кракозябры в ssh сеансе уйдут.

15 нояб. 2016 г.

Мигаем светодиодами в Raspberry Pi

Задача:
Есть некий важный процесс, который запускается на Raspberry Pi. 
Ему, процессу, не пристало лично заниматься такой глупостью, как мигание лампочками. 
Есть лампочки (LED), подключенные к GPIO выводам - красная и зеленая. 
Каждая из них может быть в 3-х состояниях - вкл, выкл и мигает. 
Для того, чтобы не отвлекать важный процесс, миганием занимается отдельный скрипт. А важный процесс просто пишет в файл признака соответствующее значение лампочки - on, off или blink. Если файла нет - значит лампочка не горит.
Скрипт на bash  под катом.

7 нояб. 2016 г.

debian 8.x - festival + asterisk

== debian 8.x - festival + asterisk ==
* Ставим
apt-get install festival festvox-ru
* Правим файл /etc/default/festival
Пишем в него
RUN_FESTIVAL=yes
* Правим файл /etc/festival.scm
Пишем в него (в конец) - включаем русский язык
;; set russian voice (comment the following 2 lines to use british_american)
(language_russian)
(set! voice_default 'voice_msu_ru_nsh_clunits)
* Правим файл /etc/asterisk/festival.conf и создаем каталог (обязательно!) - иначе будет заикаться
usecache=yes
cachedir=/var/lib/asterisk/festivalcache
* Копируем инит и разрешаем его, чтобы сервис запустился
cp /usr/share/doc/festival/examples/festival.init /etc/init.d/festival
update-rc.d festival defaults
Из плюсов - все уже в пакетах, включая русский язык и работает сразу.

15 сент. 2016 г.

Collect lspush.exe information (Lansweeper) by ftp

Collect information for Lansweeper (TM) by ftp when your notebooks anywhere. Use it by scheduler.
@echo off
:gettemp
set TMPFILE=%TMP%\%RANDOM%.tmp
if exist "%TMPFILE%" GOTO :gettemp
if exist c:\temp\lansweeper GOTO :run
mkdir c:\temp\lansweeper
:run
start /wait lspush.exe /folder "c:\temp\lansweeper"
echo open fbox.site.com>%TMPFILE%
echo lansweeper>>%TMPFILE%
echo secretpassword>>%TMPFILE%
echo bin>>%TMPFILE%
echo prompt>>%TMPFILE%
echo mput c:\temp\lansweeper\*.txt>>%TMPFILE%
echo bye>>%TMPFILE%
ftp.exe -s:%TMPFILE% >null
del %TMPFILE%
del c:\temp\lansweeper\*.txt
exit

30 авг. 2016 г.

Quick copy big number of files to slow flash drive

Проблема - DICOM исследование состоит из большого количества мелких файлов. Если их писать последовательно, просто смонтировав флешку, получается очень медленно.
Решение - создавать образ диска на HDD, писать туда, затем переносить образ через dd. Создаем таблицу разделов на флешке с двумя разделами - с тем, что нужно записать и остатком флешки.
#!/bin/bash
# 1st argument - name of disk device (e.g. /dev/sdb or /dev/flash etc)
# 2nd argument - source directory name
#FLASH_SIZE=`cat /sys/block/$1/size`
FLASH_SIZE=`du -s -k $2 |sed 's/\(.*[0-9]\)\(.*\)/\1*2+65535/'|bc`
date
echo $FLASH_SIZE sectors to write...
dd if=/dev/zero of=/tmp/flash.img bs=512 count=$FLASH_SIZE
echo dd image created...
/sbin/losetup /dev/loop0 /tmp/flash.img
/sbin/losetup -a
/sbin/mkfs -t vfat /dev/loop0
echo vfat fs on image made...
mount /dev/loop0 /mnt
cpstart=$(date +%s.%N); 
cp -r $2/* /mnt
cpdur=$(echo "$(date +%s.%N) - $cpstart" | bc);
printf "Copied in  %.6f seconds\n" $cpdur
echo files copied to image...
umount /mnt &
wait
dd if=/dev/zero of=$1 bs=512 count=1
echo -e "n\np\n1\n2048\n+"$FLASH_SIZE"\nt\nb\na\nw\nq\n"|fdisk $1 >/dev/null
dd if=/dev/loop0 of=$1'1' bs=512 count=$FLASH_SIZE &
wait
echo image moved to flash...
/sbin/losetup -D
rm /tmp/flash.img
echo -e "n\np\n2\n\n\nt\n2\nb\nw\nq\n"|fdisk $1 >/dev/null
mkfs -t vfat $1'2' &
wait
echo cleaning done.
date

11 авг. 2016 г.

От Стокгольма до Лаппеенранты за 7 дней - перегон яхты из Швеции.

Участники:
ТС - я, рулильщик
БР - брат, таксист на дальние расстояния.
Д - дочь, студентка, кок и швартовая команда.
АИ - наша единственная надежда, навигатор и шкотовый.














День (-1), 08.07
Путешествие началось вечером в пятницу. Загрузив вещи в машину, в 18:30 мы выехали из Питера. Нашей целью была паромная переправа в Турку. Гугл утверждал, что ехать туда около 4,5 часов, но по дороге был большой элемент неопределённости - финская граница в пятницу вечером. Поэтому выехали мы с запасом, поставив себе задачу пройти границу до полуночи. Около 10 часов вечера забрали от выборгского замка АИ с вещами.
На границу приехали около 23:30 и, на удивление, очередь там оказалось совсем не большой. Примерно в 00:10 выехали в Финляндию.

2 авг. 2016 г.

Установка DCM4CHEE для Windows и Debian

Windows

Берем инсталляцию MYSQL отсюда - http://dev.mysql.com/downloads/windows/
Берем инсталляцию JDK отсюда - 
http://www.oracle.com/technetwork/java/javase/downloads/index.html
или (для JDK7) 
http://www.oracle.com/technetwork/java/javase/downloads/jdk7-downloads-1880260.html
сам dcm4chee берем отсюда - 
https://sourceforge.net/projects/dcm4che/files/dcm4chee/
Jboss для него берем отсюда - 
https://sourceforge.net/projects/jboss/files/JBoss/JBoss-4.2.3.GA/
Ставим MySQL.
Ставим JDK. Нужно ставить 1.7, так как с 8 не работает jmx-console


4 июн. 2016 г.

Нагрузочное тестирование Asterisk

На дополнительном Asterisk cоздаем call file с именем test:
Channel: SIP/192.168.0.1/100
application:Playback
data:demo-congrats
MaxRetires:1
RetryTime:60
WaitTime:30
Priority:1

С помощью скрипта закидываем его на прозвон в цикле:
#!/bin/bash
while true
do
  cp test test.call
  chown asterisk test.call
  chgrp asterisk test.call
  tmpname=$RANDOM.call
  mv test.call /var/spool/asterisk/outgoing/$tmpname
  sleep 60
done

20 мая 2016 г.

Lansweeper lspush.exe + openvpn - collect data on connect

The task:
Collect data from mobile computers after connecting into corporate network with openvpn client for windows.
The problem:
Openvpn client wait while "up" script ends. The lansweeper server not available because connection still not established.
How to resolve:
Run script and return control to connection. Run lansweeper client 20 seconds later.
=============================================
1. Use "up" option of openvpn
# connection.ovpn
script-security 2 system
up "c:\\adm\\up.cmd"
=============================================
2. Run vbscript and return to connection without waiting script
rem c:\adm\up.cmd
cscript.exe c:\adm\lspush.vbs
=============================================
Rem c:\adm\lspush.vbs
Set WshShell = WScript.CreateObject("WScript.Shell")
call WshShell.Run("c:\adm\lspush.cmd",0,false)
=============================================
3. Openvpn connection established and lspush.exe runs after timeout, when lansweeper server already availiable.
rem  c:\adm\lspush.cmd
timeout /t 20
c:\adm\lspush.exe my.lansweeper.loc

26 апр. 2016 г.

Raspberry Pi A/B 26 and 40 pin connector


20 апр. 2016 г.

Install dcm4chee-cdw on raspberry pi 2 (or raspberry pi model b) part 2 - writing dicom to flashdrive

Replace path to mkisofs and cdrecord to own scripts.
Connect button and LED to gpio connector. (button -  pins 9/11, led - pins 13/14)
Scripts will be availiable later.

13 апр. 2016 г.

Install dcm4chee-cdw on raspberry pi 2 (or raspberry pi model b)

1. Download minimal Raspberry Pi image from https://downloads.raspberrypi.org/raspbian_lite_latest,
write it on SD-card,
on any Linux  - apply gparted to /dev/sdb, resize partition up to flash size.

2. Load system on Raspberry. Connect by ssh.

29 мар. 2016 г.

Using Cisco SPA504G Yealink t27 t22p Fanvil C66 X5S Grandstream GXP1628 BLF lamps as status indicators and speed dial - Asterisk



; extensions.conf

[Hints]
exten => 9901,hint,Custom:LoginStat01
exten => 9801,hint,Custom:QueueStat01
exten => 9701,hint,Custom:PauseStat01
[Internal-Main]
; Operator login/logout ==================================
exten => _99XX,1,Answer
 same => n,noCDR()
 same => n,GotoIf($["${DEVICE_STATE(Custom:LoginStat${CALLERID(num)})}" = "NOT_INUSE"]?logout)
 same => n,Set(DEVICE_STATE(Custom:LoginStat${CALLERID(num)})=NOT_INUSE) ; login indicator becomes green
; do something and hangup
 same => n(logout),NoOp("Выход из системы")
 same => n,Set(DEVICE_STATE(Custom:LoginStat${CALLERID(num)})=INUSE) ; login indicator becomes red
; do something and hangup

14 мар. 2016 г.

"Правильная" таблица CDR

<pre>

CREATE TABLE `cdr` (
`id` int(11) unsigned NOT NULL,
  `calldate` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
  `clid` varchar(80)  NOT NULL DEFAULT '',
  `src` varchar(80)  NOT NULL DEFAULT '',
  `dst` varchar(80)  NOT NULL DEFAULT '',
  `dcontext` varchar(80) NOT NULL DEFAULT '',
  `channel` varchar(80)  NOT NULL DEFAULT '',
  `dstchannel` varchar(80)  NOT NULL DEFAULT '',
  `lastapp` varchar(80)  NOT NULL DEFAULT '',
  `lastdata` varchar(80)  NOT NULL DEFAULT '',
  `duration` int(11) NOT NULL DEFAULT '0',
  `billsec` int(11) NOT NULL DEFAULT '0',
  `disposition` varchar(45)  NOT NULL DEFAULT '',
  `amaflags` int(11) NOT NULL DEFAULT '0',
  `accountcode` varchar(20)  NOT NULL DEFAULT '',
  `userfield` varchar(255)  NOT NULL DEFAULT '',
  `uniqueid` varchar(32)  NOT NULL DEFAULT '',
  `linkedid` varchar(32)  NOT NULL DEFAULT '',
  `sequence` varchar(32)  NOT NULL DEFAULT '',
  `peeraccount` varchar(32)  NOT NULL DEFAULT ''
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;

ALTER TABLE `cdr`
ADD PRIMARY KEY (`id`),
ADD KEY `calldate` (`calldate`),
ADD KEY `dst` (`dst`),
ADD KEY `src` (`src`),
ADD KEY `uniqueid` (`uniqueid`),
ADD KEY `accountcode` (`accountcode`);

ALTER TABLE `cdr`
MODIFY `id` int(11) unsigned NOT NULL AUTO_INCREMENT;