Журнал лабораторных работ

Содержание

Журнал

Четверг (11/27/14)

/dev/pts/4
15:11:43
#cat > /tmp/call.call
^C
15:12:11
#cat /tmp/call.call

15:12:16
#cat > /tmp/call.call
Context: internal
Channel: SIP/1101
Extension: 8405
^C
15:12:49
#cat > /tmp/call.call
Context: internal
Channel: SIP/1101
Extension: 8405
^Z
[2]+  Stopped                 cat > /tmp/call.call
15:12:56
#cat > /tmp/call.call
Context: internal
Channel: SIP/1101
Extension: 8405
^R
^C
15:13:05
#vi /tmp/call.call
--- /tmp/l3-saved-3787.27008.9484	2014-11-27 16:13:09.833670347 +0200
+++ /tmp/call.call	2014-11-27 16:13:23.309669925 +0200
@@ -1,3 +1,3 @@
 Context: internal
-Channel: SIP/1101
+Channel: SIP/3201
 Extension: 8405
15:13:23
#chown asterisk:asterisk /tmp/call.call

15:13:36
#cp -p /tmp/call.call /var/spool/asterisk/outgoing/

15:13:45
#ls /var/spool/asterisk/outgoing/

15:15:04
#vi /usr/local/call.all
--- /dev/null	2014-11-27 09:27:30.757697914 +0200
+++ /usr/local/call.all	2014-11-27 16:24:30.113649048 +0200
@@ -0,0 +1,18 @@
+
+for CHANNEL in 1201 1202 kiev/{1{1,3},2{1,2,3},3{1,2}}0{1,2}
+do
+
+FILE=/tmp/${RANDOM}$RANDOM.call
+
+cat <<EOF > $FILE
+Context: internal
+Extension: 8405
+Channel: SIP/${CHANNEL}
+EOF
+
+chown asterisk:asterisk $FILE
+mv $FILE /var/spool/asterisk/outgoing/
+
+done
+
+exit 0
15:24:42
#/usr/local/call.all

15:25:27
#^C

15:25:28
#vi /usr/local/call.all
15:27:12
#mv /usr/local/call.all /usr/local/call-all

15:27:35
#ls /usr/local/
bin  call-all  etc  games  include  lib  man  sbin  share  src
15:28:10
#vi /usr/local/bin/call-all-my
прошло 18 минут
15:46:38
#apt-get install subversion
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following extra packages will be installed:
  libsvn1
Suggested packages:
  subversion-tools
The following NEW packages will be installed:
  libsvn1 subversion
0 upgraded, 2 newly installed, 0 to remove and 0 not upgraded.
...
Get:2 http://192.168.12.254/debian/ wheezy/main subversion amd64 1.6.17dfsg-4+deb7u6 [1,320 kB]
Fetched 2,253 kB in 0s (37.6 MB/s)
Selecting previously unselected package libsvn1:amd64.
(Reading database ... 144339 files and directories currently installed.)
Unpacking libsvn1:amd64 (from .../libsvn1_1.6.17dfsg-4+deb7u6_amd64.deb) ...
Selecting previously unselected package subversion.
Unpacking subversion (from .../subversion_1.6.17dfsg-4+deb7u6_amd64.deb) ...
Processing triggers for man-db ...
Setting up libsvn1:amd64 (1.6.17dfsg-4+deb7u6) ...
Setting up subversion (1.6.17dfsg-4+deb7u6) ...
15:46:58
#svn co http://chan-datacard.googlecode.com/svn/trunk/
A    trunk/__helpers.c
A    trunk/__char_conv.c
A    trunk/configure
A    trunk/chan_datacard.h
A    trunk/Makefile.in
A    trunk/__cli.c
A    trunk/COPYRIGHT.txt
A    trunk/__channel.c
A    trunk/__manager.c
A    trunk/__at_fifo_queue.c
...
A    trunk/__at_response.c
A    trunk/__ringbuffer.c
A    trunk/README.txt
A    trunk/etc
A    trunk/etc/datacard.conf
A    trunk/__ringbuffer.h
A    trunk/chan_datacard.c
A    trunk/__at_parse.c
A    trunk/__at_read.c
Checked out revision 192.
15:48:07
#svn co http://chan-datacard.googlecode.com/svn/trunk/ chan-datacard
A    chan-datacard/__helpers.c
A    chan-datacard/__char_conv.c
A    chan-datacard/configure
A    chan-datacard/chan_datacard.h
A    chan-datacard/Makefile.in
A    chan-datacard/__cli.c
A    chan-datacard/COPYRIGHT.txt
A    chan-datacard/__channel.c
A    chan-datacard/__manager.c
A    chan-datacard/__at_fifo_queue.c
...
A    chan-datacard/__at_response.c
A    chan-datacard/__ringbuffer.c
A    chan-datacard/README.txt
A    chan-datacard/etc
A    chan-datacard/etc/datacard.conf
A    chan-datacard/__ringbuffer.h
A    chan-datacard/chan_datacard.c
A    chan-datacard/__at_parse.c
A    chan-datacard/__at_read.c
Checked out revision 192.
15:48:31
#cd chan-datacard/

15:48:36
#ls -ls
total 236
 4 -rw-r--r-- 1 root root  2778 Nov 27 16:48 __app.c
 4 -rw-r--r-- 1 root root  2815 Nov 27 16:48 __at_fifo_queue.c
16 -rw-r--r-- 1 root root 15109 Nov 27 16:48 __at_parse.c
 8 -rw-r--r-- 1 root root  7454 Nov 27 16:48 __at_read.c
40 -rw-r--r-- 1 root root 37668 Nov 27 16:48 __at_response.c
16 -rw-r--r-- 1 root root 13493 Nov 27 16:48 __at_send.c
20 -rw-r--r-- 1 root root 17272 Nov 27 16:48 chan_datacard.c
20 -rw-r--r-- 1 root root 16659 Nov 27 16:48 chan_datacard.h
20 -rw-r--r-- 1 root root 20364 Nov 27 16:48 __channel.c
...
 4 -rwxr-xr-x 1 root root   799 Nov 27 16:48 configure
 4 -rw-r--r-- 1 root root   124 Nov 27 16:48 COPYRIGHT.txt
 4 drwxr-xr-x 3 root root  4096 Nov 27 16:48 etc
 4 -rw-r--r-- 1 root root  2339 Nov 27 16:48 __helpers.c
20 -rw-r--r-- 1 root root 18671 Nov 27 16:48 LICENSE.txt
 4 -rw-r--r-- 1 root root   573 Nov 27 16:48 Makefile.in
12 -rw-r--r-- 1 root root 11477 Nov 27 16:48 __manager.c
 4 -rw-r--r-- 1 root root  2198 Nov 27 16:48 README.txt
 8 -rw-r--r-- 1 root root  6199 Nov 27 16:48 __ringbuffer.c
 4 -rw-r--r-- 1 root root  1038 Nov 27 16:48 __ringbuffer.h
15:48:38
#apt-get install asterisk-dev
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following NEW packages will be installed:
  asterisk-dev
0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
Need to get 959 kB of archives.
After this operation, 2,131 kB of additional disk space will be used.
Get:1 http://192.168.12.254/debian/ wheezy/main asterisk-dev all 1:1.8.13.1~dfsg1-3+deb7u3 [959 kB]
Fetched 959 kB in 0s (31.3 MB/s)
Selecting previously unselected package asterisk-dev.
(Reading database ... 144427 files and directories currently installed.)
Unpacking asterisk-dev (from .../asterisk-dev_1%3a1.8.13.1~dfsg1-3+deb7u3_all.deb) ...
Setting up asterisk-dev (1:1.8.13.1~dfsg1-3+deb7u3) ...
15:49:01
#./configure
configure complete, now type 'make'
15:49:19
#make
gcc -Wall -Wextra -fPIC -DAST_MODULE=\"chan_datacard\" -D_THREAD_SAFE -I. -I/usr/include -O2 -DICONV_CONST="" -D__DEBUG__ -D__APP__ -c chan_datacard.c
In file included from chan_datacard.c:69:0:
chan_datacard.h:257:2: warning: initialization from incompatible pointer type [enabled by default]
chan_datacard.h:257:2: warning: (near initialization for ‘channel_tech.requester’) [enabled by default]
In file included from chan_datacard.c:85:0:
__channel.c: In function ‘channel_new’:
__channel.c:18:2: warning: implicit declaration of function ‘ast_channel_linkedid’ [-Wimplicit-function-declaration]
__channel.c:18:9: warning: pointer/integer type mismatch in conditional expression [enabled by default]
__channel.c:22:3: warning: implicit declaration of function ‘ast_channel_tech_pvt_set’ [-Wimplicit-function-declaration]
__channel.c:23:3: warning: implicit declaration of function ‘ast_channel_tech_set’ [-Wimplicit-function-declaration]
...
__channel.c: In function ‘channel_indicate’:
__channel.c:792:15: warning: initialization makes pointer from integer without a cast [enabled by default]
__channel.c: In function ‘channel_queue_hangup’:
__channel.c:879:6: warning: implicit declaration of function ‘ast_channel_hangupcause_set’ [-Wimplicit-function-declaration]
chan_datacard.c: In function ‘unload_module’:
chan_datacard.c:621:2: warning: implicit declaration of function ‘ast_format_cap_destroy’ [-Wimplicit-function-declaration]
chan_datacard.c: In function ‘load_module’:
chan_datacard.c:685:9: warning: implicit declaration of function ‘ast_format_cap_alloc’ [-Wimplicit-function-declaration]
chan_datacard.c:690:27: warning: assignment makes pointer from integer without a cast [enabled by default]
make: *** [chan_datacard.o] Error 1
15:49:22
#svn co http://asterisk-chan-dongle.googlecode.com/svn/trunk/ chan-dongle
A    chan-dongle/at_read.c
A    chan-dongle/Makefile.in
A    chan-dongle/chan_dongle.c
A    chan-dongle/TODO.txt
A    chan-dongle/at_read.h
A    chan-dongle/chan_dongle.h
A    chan-dongle/cli.c
A    chan-dongle/channel.c
A    chan-dongle/manager.c
A    chan-dongle/dc_config.c
...
A    chan-dongle/contrib/openwrt/asterisk18-chan-dongle/Makefile
A    chan-dongle/LICENSE.txt
A    chan-dongle/cpvt.h
A    chan-dongle/single.c
A    chan-dongle/memmem.h
A    chan-dongle/README.txt
A    chan-dongle/etc
A    chan-dongle/etc/extensions.conf
A    chan-dongle/etc/dongle.conf
Checked out revision 42.
15:52:50
#cd ..

15:53:06
#cd chan-dongle/]
bash: cd: chan-dongle/]: No such file or directory
15:53:11
#cd chan-dongle/

15:53:12
#./contrib/
bash: ./contrib/: Is a directory
15:53:15
#./configure
bash: ./configure: No such file or directory
15:54:44
#aclocal

15:55:10
#autoconf

15:55:13
#automake -a
configure.in:6: installing `./config.guess'
configure.in:6: installing `./config.sub'
configure.in:7: installing `./install-sh'
configure.in:7: installing `./missing'
automake: no `Makefile.am' found for any configure output
15:55:20
#./configure
checking build system type... x86_64-unknown-linux-gnu
checking host system type... x86_64-unknown-linux-gnu
checking target system type... x86_64-unknown-linux-gnu
checking for a BSD-compatible install... /usr/bin/install -c
checking whether build environment is sane... yes
checking for a thread-safe mkdir -p... /bin/mkdir -p
checking for gawk... no
checking for mawk... mawk
checking whether make sets $(MAKE)... yes
checking for gcc... gcc
...
checking for memmem... yes
checking for strcasecmp... yes
checking for strchr... yes
checking for strncasecmp... yes
checking for strtol... yes
checking for realpath... yes
configure: creating ./config.status
config.status: creating Makefile
config.status: creating config.h
config.status: executing depfiles commands
15:55:27
#make -j
gcc -g -O2 -O6 -I.  -D_GNU_SOURCE -I/usr/include -I/usr/include -DHAVE_CONFIG_H  -fvisibility=hidden -fPIC -Wall -Wextra -MD -MT app.o -MF .app.o.d -MP  -o app.o -c app.c
gcc -g -O2 -O6 -I.  -D_GNU_SOURCE -I/usr/include -I/usr/include -DHAVE_CONFIG_H  -fvisibility=hidden -fPIC -Wall -Wextra -MD -MT at_command.o -MF .at_command.o.d -MP  -o at_command.o -c at_command.c
gcc -g -O2 -O6 -I.  -D_GNU_SOURCE -I/usr/include -I/usr/include -DHAVE_CONFIG_H  -fvisibility=hidden -fPIC -Wall -Wextra -MD -MT at_parse.o -MF .at_parse.o.d -MP  -o at_parse.o -c at_parse.c
gcc -g -O2 -O6 -I.  -D_GNU_SOURCE -I/usr/include -I/usr/include -DHAVE_CONFIG_H  -fvisibility=hidden -fPIC -Wall -Wextra -MD -MT at_queue.o -MF .at_queue.o.d -MP  -o at_queue.o -c at_queue.c
gcc -g -O2 -O6 -I.  -D_GNU_SOURCE -I/usr/include -I/usr/include -DHAVE_CONFIG_H  -fvisibility=hidden -fPIC -Wall -Wextra -MD -MT at_read.o -MF .at_read.o.d -MP  -o at_read.o -c at_read.c
gcc -g -O2 -O6 -I.  -D_GNU_SOURCE -I/usr/include -I/usr/include -DHAVE_CONFIG_H  -fvisibility=hidden -fPIC -Wall -Wextra -MD -MT at_response.o -MF .at_response.o.d -MP  -o at_response.o -c at_response.c
gcc -g -O2 -O6 -I.  -D_GNU_SOURCE -I/usr/include -I/usr/include -DHAVE_CONFIG_H  -fvisibility=hidden -fPIC -Wall -Wextra -MD -MT chan_dongle.o -MF .chan_dongle.o.d -MP  -o chan_dongle.o -c chan_dongle.c
gcc -g -O2 -O6 -I.  -D_GNU_SOURCE -I/usr/include -I/usr/include -DHAVE_CONFIG_H  -fvisibility=hidden -fPIC -Wall -Wextra -MD -MT channel.o -MF .channel.o.d -MP  -o channel.o -c channel.c
gcc -g -O2 -O6 -I.  -D_GNU_SOURCE -I/usr/include -I/usr/include -DHAVE_CONFIG_H  -fvisibility=hidden -fPIC -Wall -Wextra -MD -MT char_conv.o -MF .char_conv.o.d -MP  -o char_conv.o -c char_conv.c
gcc -g -O2 -O6 -I.  -D_GNU_SOURCE -I/usr/include -I/usr/include -DHAVE_CONFIG_H  -fvisibility=hidden -fPIC -Wall -Wextra -MD -MT cli.o -MF .cli.o.d -MP  -o cli.o -c cli.c
gcc -g -O2 -O6 -I.  -D_GNU_SOURCE -I/usr/include -I/usr/include -DHAVE_CONFIG_H  -fvisibility=hidden -fPIC -Wall -Wextra -MD -MT helpers.o -MF .helpers.o.d -MP  -o helpers.o -c helpers.c
gcc -g -O2 -O6 -I.  -D_GNU_SOURCE -I/usr/include -I/usr/include -DHAVE_CONFIG_H  -fvisibility=hidden -fPIC -Wall -Wextra -MD -MT manager.o -MF .manager.o.d -MP  -o manager.o -c manager.c
gcc -g -O2 -O6 -I.  -D_GNU_SOURCE -I/usr/include -I/usr/include -DHAVE_CONFIG_H  -fvisibility=hidden -fPIC -Wall -Wextra -MD -MT memmem.o -MF .memmem.o.d -MP  -o memmem.o -c memmem.c
gcc -g -O2 -O6 -I.  -D_GNU_SOURCE -I/usr/include -I/usr/include -DHAVE_CONFIG_H  -fvisibility=hidden -fPIC -Wall -Wextra -MD -MT ringbuffer.o -MF .ringbuffer.o.d -MP  -o ringbuffer.o -c ringbuffer.c
gcc -g -O2 -O6 -I.  -D_GNU_SOURCE -I/usr/include -I/usr/include -DHAVE_CONFIG_H  -fvisibility=hidden -fPIC -Wall -Wextra -MD -MT cpvt.o -MF .cpvt.o.d -MP  -o cpvt.o -c cpvt.c
gcc -g -O2 -O6 -I.  -D_GNU_SOURCE -I/usr/include -I/usr/include -DHAVE_CONFIG_H  -fvisibility=hidden -fPIC -Wall -Wextra -MD -MT dc_config.o -MF .dc_config.o.d -MP  -o dc_config.o -c dc_config.c
gcc -g -O2 -O6 -I.  -D_GNU_SOURCE -I/usr/include -I/usr/include -DHAVE_CONFIG_H  -fvisibility=hidden -fPIC -Wall -Wextra -MD -MT pdu.o -MF .pdu.o.d -MP  -o pdu.o -c pdu.c
gcc -g -O2 -O6 -I.  -D_GNU_SOURCE -I/usr/include -I/usr/include -DHAVE_CONFIG_H  -fvisibility=hidden -fPIC -Wall -Wextra -MD -MT mixbuffer.o -MF .mixbuffer.o.d -MP  -o mixbuffer.o -c mixbuffer.c
gcc -g -O2 -O6 -I.  -D_GNU_SOURCE -I/usr/include -I/usr/include -DHAVE_CONFIG_H  -fvisibility=hidden -fPIC -Wall -Wextra -MD -MT pdiscovery.o -MF .pdiscovery.o.d -MP  -o pdiscovery.o -c pdiscovery.c
gcc  -shared -Xlinker -x -o chan_dongle.so app.o at_command.o at_parse.o at_queue.o at_read.o at_response.o chan_dongle.o channel.o char_conv.o cli.o helpers.o manager.o memmem.o ringbuffer.o cpvt.o dc_config.o pdu.o mixbuffer.o pdiscovery.o
15:55:37
#make install
./config.status
config.status: creating Makefile
config.status: creating config.h
config.status: config.h is unchanged
config.status: executing depfiles commands
strip chan_dongle.so
/usr/bin/install -c -m 755 chan_dongle.so /usr/lib/asterisk/modules
15:55:48
#ls -ls /usr/lib/asterisk/modules/chan_
chan_agent.so          chan_dongle.so         chan_local.so          chan_sip.so
chan_alsa.so           chan_gtalk.so          chan_multicast_rtp.so  chan_skinny.so
chan_bridge.so         chan_iax2.so           chan_oss.so            chan_unistim.so
chan_dahdi.so          chan_jingle.so         chan_phone.so          chan_vpb.so
15:55:48
#ls -ls /usr/lib/asterisk/modules/chan_d
chan_dahdi.so   chan_dongle.so
15:55:48
#ls -ls /usr/lib/asterisk/modules/chan_dongle.so
192 -rwxr-xr-x 1 root root 193112 Nov 27 16:55 /usr/lib/asterisk/modules/chan_dongle.so
15:58:59
#ls -ls /usr/lib/asterisk/modules/chan_dongle.so
192 -rwxr-xr-x 1 root root 193112 Nov 27 16:55 /usr/lib/asterisk/modules/chan_dongle.so
15:59:06
#ls -ls /usr/lib/asterisk/modules/
total 7564
 44 -rw-r--r-- 1 root root  43464 Jan  4  2014 app_adsiprog.so
 24 -rw-r--r-- 1 root root  23168 Jan  4  2014 app_alarmreceiver.so
 20 -rw-r--r-- 1 root root  18832 Jan  4  2014 app_amd.so
 16 -rw-r--r-- 1 root root  14680 Jan  4  2014 app_authenticate.so
  8 -rw-r--r-- 1 root root   6288 Jan  4  2014 app_cdr.so
 12 -rw-r--r-- 1 root root  10464 Jan  4  2014 app_celgenuserevent.so
 12 -rw-r--r-- 1 root root  10488 Jan  4  2014 app_chanisavail.so
 12 -rw-r--r-- 1 root root  10464 Jan  4  2014 app_channelredirect.so
 32 -rw-r--r-- 1 root root  31456 Jan  4  2014 app_chanspy.so
...
 16 -rw-r--r-- 1 root root  14984 Jan  4  2014 res_rtp_multicast.so
 12 -rw-r--r-- 1 root root  10616 Jan  4  2014 res_security_log.so
 52 -rw-r--r-- 1 root root  52392 Jan  4  2014 res_smdi.so
 32 -rw-r--r-- 1 root root  30984 Jan  4  2014 res_snmp.so
 16 -rw-r--r-- 1 root root  14680 Jan  4  2014 res_speech.so
 20 -rw-r--r-- 1 root root  18976 Jan  4  2014 res_srtp.so
 16 -rw-r--r-- 1 root root  14744 Jan  4  2014 res_stun_monitor.so
 12 -rw-r--r-- 1 root root  10544 Jan  4  2014 res_timing_dahdi.so
 16 -rw-r--r-- 1 root root  14840 Jan  4  2014 res_timing_pthread.so
 16 -rw-r--r-- 1 root root  14712 Jan  4  2014 res_timing_timerfd.so
15:59:34
#ls -ls /usr/lib/asterisk/modules/chan_dongle.so
192 -rwxr-xr-x 1 root root 193112 Nov 27 16:55 /usr/lib/asterisk/modules/chan_dongle.so
15:59:37
#cp etc/dongle.conf /etc/asterisk/

16:00:44
#vi /etc/asterisk/dongle.conf
--- /tmp/l3-saved-3787.11394.10353	2014-11-27 17:00:55.733580614 +0200
+++ /etc/asterisk/dongle.conf	2014-11-27 17:01:36.001579356 +0200
@@ -77,6 +77,7 @@
 
 ; dongle required settings
 [dongle0]
+;подкл  модем
 audio=/dev/ttyUSB1		; tty port for audio connection; 	no default value
 data=/dev/ttyUSB2		; tty port for AT commands; 		no default value
 
16:01:36
#/etc/init.d/asterisk restart
Stopping Asterisk PBX: asterisk.
Starting Asterisk PBX: asterisk.
16:06:46
#cd ..

/dev/pts/6
16:07:54
#ls -l ls -ls /usr/lib/asterisk/modules/chan_dongle.so /usr
ls: cannot access ls: No such file or directory
192 -rwxr-xr-x  1 root root 193112 Nov 27 16:55 /usr/lib/asterisk/modules/chan_dongle.so
/usr:
total 136
56 drwxr-xr-x   2 root root  53248 Nov 27 16:52 bin
 4 drwxr-xr-x   2 root root   4096 Nov 23 12:49 games
 4 drwxr-xr-x  40 root root   4096 Nov 27 16:48 include
40 drwxr-xr-x 169 root root  36864 Nov 27 09:48 lib
 4 drwxrwsr-x  10 root staff  4096 Nov 27 16:28 local
12 drwxr-xr-x   2 root root  12288 Nov 27 09:48 sbin
12 drwxr-xr-x 306 root root  12288 Nov 27 16:52 share
 4 drwxr-xr-x   5 root root   4096 Nov 26 14:09 src
16:07:57
#/lls -ls /usr/lib/asterisk/modules/chan_dongle.so
bash: /lls: No such file or directory
16:07:58
#ls -ls /usr/lib/asterisk/modules/chan_dongle.so
192 -rwxr-xr-x 1 root root 193112 Nov 27 16:55 /usr/lib/asterisk/modules/chan_dongle.so
16:08:00
## я буду делать

16:08:02
#â„# сейчас посмотрим

16:08:09
#vim /etc/asterisk/dongle.conf
16:08:18
#; you can use both imei and imsi together in this case exact match by imei and imsi required
Stopping Asterisk PBX: asterisk.
Starting Asterisk PBX: asterisk.
16:08:25
#asterisk -rvvv
Asterisk 1.8.13.1~dfsg1-3+deb7u3, Copyright (C) 1999 - 2012 Digium, Inc. and others.
Created by Mark Spencer <markster@digium.com>
Asterisk comes with ABSOLUTELY NO WARRANTY; type 'core show warranty' for details.
This is free software, with components licensed under the GNU General Public
License version 2 and other licenses; you are welcome to redistribute it under
certain conditions. Type 'core show license' for details.
=========================================================================
  == Parsing '/etc/asterisk/asterisk.conf':   == Found
  == Parsing '/etc/asterisk/extconfig.conf':   == Found
Connected to Asterisk 1.8.13.1~dfsg1-3+deb7u3 currently running on debian8 (pid = 13900)
...
    -- [dongle0] Dongle has disconnected
    -- [dongle0] Trying to connect on /dev/ttyUSB2...
    -- [dongle0] Dongle has connected, initializing...
[Nov 27 17:08:55] ERROR[13956]: at_response.c:364 at_response_error: [dongle0] Getting IMSI number failed
    -- [dongle0] Error initializing Dongle
    -- [dongle0] Dongle has disconnected
    -- [dongle0] Trying to connect on /dev/ttyUSB2...
[Nov 27 17:09:10] WARNING[13940]: chan_dongle.c:215 opentty: unable to open /dev/ttyUSB2: No such file or directory
debian8*CLI> quit
Executing last minute cleanups
16:09:21
#less /var/log/messages
16:09:33
#lsusb
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 003 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 004 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 003 Device 002: ID 8087:0024 Intel Corp. Integrated Rate Matching Hub
Bus 004 Device 002: ID 8087:0024 Intel Corp. Integrated Rate Matching Hub
Bus 003 Device 003: ID 046d:c312 Logitech, Inc. DeLuxe 250 Keyboard
Bus 003 Device 004: ID 09da:000a A4 Tech Co., Ltd Optical Mouse Opto 510D
16:09:35
#lsusb
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 003 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 004 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 003 Device 002: ID 8087:0024 Intel Corp. Integrated Rate Matching Hub
Bus 004 Device 002: ID 8087:0024 Intel Corp. Integrated Rate Matching Hub
Bus 003 Device 003: ID 046d:c312 Logitech, Inc. DeLuxe 250 Keyboard
Bus 003 Device 004: ID 09da:000a A4 Tech Co., Ltd Optical Mouse Opto 510D
Bus 003 Device 006: ID 12d1:1001 Huawei Technologies Co., Ltd. E169/E620/E800 HSDPA Modem
16:09:54
## если это стыарый моедем, то он не работает

16:10:11
##новый

16:10:19
## тогда странно, потому что у сергея работает

/dev/pts/6
16:10:59
#cd chan-dongle/

16:11:04
#ls
aclocal.m4    at_read.c       channel.h      config.sub     helpers.c    memmem.o      ringbuffer.c
app.c         at_read.h       channel.o      configure      helpers.h    missing       ringbuffer.h
app.h         at_read.o       char_conv.c    configure.in   helpers.o    mixbuffer.c   ringbuffer.o
app.o         at_response.c   char_conv.h    contrib        INSTALL      mixbuffer.h   single.c
at_command.c  at_response.h   char_conv.o    COPYRIGHT.txt  install-sh   mixbuffer.o   stamp-h1
at_command.h  at_response.o   cli.c          cpvt.c         LICENSE.txt  mutils.h      stamp-h.in
at_command.o  autom4te.cache  cli.h          cpvt.h         Makefile     pdiscovery.c  test
at_parse.c    BUGS            cli.o          cpvt.o         Makefile.in  pdiscovery.h  TODO.txt
at_parse.h    chan_dongle.c   config.guess   dc_config.c    manager.c    pdiscovery.o  tools
at_parse.o    chan_dongle.h   config.h       dc_config.h    manager.h    pdu.c
at_queue.c    chan_dongle.o   config.h.in    dc_config.o    manager.o    pdu.h
at_queue.h    chan_dongle.so  config.log     etc            memmem.c     pdu.o
at_queue.o    channel.c       config.status  export.h       memmem.h     README.txt
/dev/pts/4
16:16:39
#vi /etc/asterisk/extensions.conf

Пятница (11/28/14)

/dev/pts/1
08:52:52
#screen
/dev/pts/2
08:52:52
#screen
/dev/pts/4
08:55:35
#mkdir aster-tips

прошло 22 минуты
09:18:00
#cd aster-tips/

09:18:05
#vi mapping
--- /dev/null	2014-11-28 09:38:33.641685563 +0200
+++ mapping	2014-11-28 10:23:30.965888871 +0200
@@ -0,0 +1,29 @@
+[gsm-card0
+; для каждой карточки если надо
+[gsm-card1]
+
+[gsm-incoming]
+
+; как сделать красивый маппинг?
+; +380501234567 => 3301
+; +380502233445 => 3302
+; через базу данных:
+; database set gsm-incoming +380501234567 3301
+; database set gsm-incoming +380502233445 3302
+; и используете в диалплане так:
+; Dial(SIP/${DB(gsm-incoming/${DONGLENUMBER})}) 
+
+
+exten => _33XX,1,Dial(SIP/${EXTEN},5)
+exten => _33XX,n,Dial(SIP/${DB(redirect/${EXTEN})})
+; только сначала нужно прописать мобильные телефоны в базе redirect: 
+
+database put redirect 3301 +380503322117
+
+; теперь будет звонить на первый телефон Сергея
+;exten => s,1,Dial(SIP/2301)
+; попробуем перевести на белок и бурундуков
+exten => s,1,Goto(menu,s,1)
+
+exten => sms,1,System(sh -c "echo ${SMS} >> /tmp/sms.log")
+exten => ussd,1,System(sh -c "echo ${USSD} >> /tmp/ussd.log")
09:23:31
#lspci | grep -i digium

09:26:00
#lspci
00:00.0 Host bridge: Intel Corporation 2nd Generation Core Processor Family DRAM Controller (rev 09)
00:01.0 PCI bridge: Intel Corporation Xeon E3-1200/2nd Generation Core Processor Family PCI Express Root Port (rev 09)
00:02.0 VGA compatible controller: Intel Corporation 2nd Generation Core Processor Family Integrated Graphics Controller (rev 09)
00:16.0 Communication controller: Intel Corporation 6 Series/C200 Series Chipset Family MEI Controller #1 (rev 04)
00:16.2 IDE interface: Intel Corporation 6 Series/C200 Series Chipset Family IDE-r Controller (rev 04)
00:16.3 Serial controller: Intel Corporation 6 Series/C200 Series Chipset Family KT Controller (rev 04)
00:19.0 Ethernet controller: Intel Corporation 82579LM Gigabit Network Connection (rev 04)
00:1a.0 USB controller: Intel Corporation 6 Series/C200 Series Chipset Family USB Enhanced Host Controller #2 (rev 04)
00:1b.0 Audio device: Intel Corporation 6 Series/C200 Series Chipset Family High Definition Audio Controller (rev 04)
00:1c.0 PCI bridge: Intel Corporation 6 Series/C200 Series Chipset Family PCI Express Root Port 1 (rev b4)
00:1c.6 PCI bridge: Intel Corporation 6 Series/C200 Series Chipset Family PCI Express Root Port 7 (rev b4)
00:1d.0 USB controller: Intel Corporation 6 Series/C200 Series Chipset Family USB Enhanced Host Controller #1 (rev 04)
00:1e.0 PCI bridge: Intel Corporation 82801 PCI Bridge (rev a4)
00:1f.0 ISA bridge: Intel Corporation Q67 Express Chipset Family LPC Controller (rev 04)
00:1f.2 SATA controller: Intel Corporation 6 Series/C200 Series Chipset Family SATA AHCI Controller (rev 04)
00:1f.3 SMBus: Intel Corporation 6 Series/C200 Series Chipset Family SMBus Controller (rev 04)
03:00.0 USB controller: NEC Corporation uPD720200 USB 3.0 Host Controller (rev 04)
04:03.0 FireWire (IEEE 1394): LSI Corporation FW322/323 [TrueFire] 1394a Controller (rev 70)
09:26:04
#apt-get install git-core^C

прошло 73 минуты
10:39:38
#cd ..

10:39:41
#apt-get install git-core
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following NEW packages will be installed:
  git-core
0 upgraded, 1 newly installed, 0 to remove and 5 not upgraded.
Need to get 1,336 B of archives.
After this operation, 21.5 kB of additional disk space will be used.
Get:1 http://192.168.12.254/debian/ wheezy/main git-core all 1:1.7.10.4-1+wheezy1 [1,336 B]
Fetched 1,336 B in 0s (88.3 kB/s)
Selecting previously unselected package git-core.
(Reading database ... 144805 files and directories currently installed.)
Unpacking git-core (from .../git-core_1%3a1.7.10.4-1+wheezy1_all.deb) ...
Setting up git-core (1:1.7.10.4-1+wheezy1) ...
10:39:51
#git clone git://git.asterisk.org/dahdi/linux dahdi-linux
Cloning into 'dahdi-linux'...
remote: Counting objects: 7754, done.
remote: Compressing objects: 100% (1510/1510), done.
remote: Total 7754 (delta 5067), reused 7754 (delta 5067)
Receiving objects: 100% (7754/7754), 5.17 MiB | 2.30 MiB/s, done.
Resolving deltas: 100% (5067/5067), done.
10:40:07
#cd dahdi-linux/

10:41:12
#make
make -C drivers/dahdi/firmware firmware-loaders
make[1]: Entering directory `/root/dahdi-linux/drivers/dahdi/firmware'
Attempting to download dahdi-fwload-vpmadt032-1.25.0.tar.gz
--2014-11-28 11:41:21--  http://downloads.digium.com/pub/telephony/firmware/releases/dahdi-fwload-vpmadt032-1.25.0.tar.gz
Resolving downloads.digium.com (downloads.digium.com)... 76.164.171.238, 2001:470:e0d4::ee
Connecting to downloads.digium.com (downloads.digium.com)|76.164.171.238|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 149360 (146K) [application/x-gzip]
Saving to: `dahdi-fwload-vpmadt032-1.25.0.tar.gz'
100%[===========================================================>] 149,360      262K/s   in 0.6s
...
  LD [M]  /root/dahdi-linux/drivers/dahdi/xpp/xpd_fxo.ko
  CC      /root/dahdi-linux/drivers/dahdi/xpp/xpd_fxs.mod.o
  LD [M]  /root/dahdi-linux/drivers/dahdi/xpp/xpd_fxs.ko
  CC      /root/dahdi-linux/drivers/dahdi/xpp/xpd_pri.mod.o
  LD [M]  /root/dahdi-linux/drivers/dahdi/xpp/xpd_pri.ko
  CC      /root/dahdi-linux/drivers/dahdi/xpp/xpp.mod.o
  LD [M]  /root/dahdi-linux/drivers/dahdi/xpp/xpp.ko
  CC      /root/dahdi-linux/drivers/dahdi/xpp/xpp_usb.mod.o
  LD [M]  /root/dahdi-linux/drivers/dahdi/xpp/xpp_usb.ko
make[1]: Leaving directory `/usr/src/linux-headers-3.2.0-4-amd64'
10:42:17
#grep cpu /proc/cpuinfo
cpu family      : 6
cpu MHz         : 1600.000
cpu cores       : 4
cpuid level     : 13
cpu family      : 6
cpu MHz         : 1600.000
cpu cores       : 4
cpuid level     : 13
cpu family      : 6
cpu MHz         : 1600.000
cpu cores       : 4
cpuid level     : 13
cpu family      : 6
cpu MHz         : 1600.000
cpu cores       : 4
cpuid level     : 13
10:42:27
#grep cpuid /proc/cpuinfo
cpuid level     : 13
cpuid level     : 13
cpuid level     : 13
cpuid level     : 13
10:42:35
#find /sys/ -name \*03:00.0\*
/sys/devices/pci0000:00/0000:00:1c.6/0000:03:00.0
/sys/bus/pci/devices/0000:03:00.0
/sys/bus/pci/drivers/xhci_hcd/0000:03:00.0
10:44:04
#make install
make -C drivers/dahdi/firmware firmware-loaders
make[1]: Entering directory `/root/dahdi-linux/drivers/dahdi/firmware'
make[1]: Leaving directory `/root/dahdi-linux/drivers/dahdi/firmware'
make -C /lib/modules/3.2.0-4-amd64/build SUBDIRS=/root/dahdi-linux/drivers/dahdi DAHDI_INCLUDE=/root/dahdi-linux/include DAHDI_MODULES_EXTRA=" " HOTPLUG_FIRMWARE=yes modules DAHDI_BUILD_ALL=m
make[1]: Entering directory `/usr/src/linux-headers-3.2.0-4-amd64'
  VERSION /root/dahdi-linux/drivers/dahdi/xpp/xpp_version.h
  Building modules, stage 2.
  MODPOST 35 modules
make[1]: Leaving directory `/usr/src/linux-headers-3.2.0-4-amd64'
build_tools/uninstall-modules dahdi 3.2.0-4-amd64
...
                ln -s FPGA_1161.201.hex /usr/share/dahdi/FPGA_1161.203.hex;\
        fi
make[1]: Leaving directory `/root/dahdi-linux/drivers/dahdi/xpp/firmwares'
###################################################
###
### DAHDI installed successfully.
### If you have not done so before, install the package
### dahdi-tools.
###
###################################################
10:45:48
#modinfo wct1xxp
filename:       /lib/modules/3.2.0-4-amd64/dahdi/wct1xxp.ko
license:        GPL v2
author:         Mark Spencer <markster@digium.com>
description:    Wildcard T100P/E100P Driver
alias:          pci:v0000E159d00000001sv00006159sd*bc*sc*i*
depends:        dahdi
vermagic:       3.2.0-4-amd64 SMP mod_unload modversions
parm:           debug:int
10:47:11
#apt-get install dahdi-linux asterisk-dahdi
Reading package lists... Done
Building dependency tree
Reading state information... Done
asterisk-dahdi is already the newest version.
dahdi-linux is already the newest version.
dahdi-linux set to manually installed.
0 upgraded, 0 newly installed, 0 to remove and 5 not upgraded.
10:55:20
#cd ..

прошло 33 минуты
11:29:12
#ls -ls /etc/asterisk/
adsi.conf                cel_sqlite3_custom.conf  func_odbc.conf           res_config_mysql.conf
agents.conf              cel_tds.conf             gtalk.conf               res_config_sqlite.conf
ais.conf                 chan_dahdi.conf          h323.conf                res_curl.conf
alarmreceiver.conf       chan_mobile.conf         http.conf                res_fax.conf
alsa.conf                chan_ooh323.conf         iax.conf                 res_ldap.conf
amd.conf                 cli_aliases.conf         iaxprov.conf             res_odbc.conf
app_mysql.conf           cli.conf                 indications.conf         res_pgsql.conf
asterisk.adsi            cli_permissions.conf     jabber.conf              res_pktccops.conf
asterisk.conf            codecs.conf              jingle.conf              res_snmp.conf
calendar.conf            console.conf             logger.conf              res_stun_monitor.conf
...
cdr_mysql.conf           enum.conf                misdn.conf               skinny.conf
cdr_odbc.conf            extconfig.conf           modules.conf             sla.conf
cdr_pgsql.conf           extensions.ael           musiconhold.conf         smdi.conf
cdr_sqlite3_custom.conf  extensions.conf          muted.conf               telcordia-1.adsi
cdr_syslog.conf          extensions.conf.bak      osp.conf                 udptl.conf
cdr_tds.conf             extensions.lua           oss.conf                 unistim.conf
cel.conf                 extensions_minivm.conf   phone.conf               users.conf
cel_custom.conf          features.conf            phoneprov.conf           voicemail.conf
cel_odbc.conf            festival.conf            queuerules.conf          vpb.conf
cel_pgsql.conf           followme.conf            queues.conf
11:29:12
#ls -ls /etc/asterisk/co
codecs.conf   console.conf
11:29:12
#ls -ls /etc/asterisk/co
codecs.conf   console.conf
11:29:12
#ls -ls
total 28
4 -rw-r--r-- 1 root root  811 Nov 26 12:03 \
4 drwxr-xr-x 2 root root 4096 Nov 28 10:23 aster-tips
4 drwxr-xr-x 5 root root 4096 Nov 27 16:52 chan-datacard
4 drwxr-xr-x 8 root root 4096 Nov 27 16:55 chan-dongle
4 drwxr-xr-x 6 root root 4096 Nov 28 11:40 dahdi-linux
4 -rw-r--r-- 1 root root    6 Nov 26 17:03 ert
4 drwxr-xr-x 4 root root 4096 Nov 27 16:48 trunk
прошло 44 минуты
12:13:50
#vi /etc/asterisk/extensions.conf
--- /tmp/l3-saved-3744.5471.19861	2014-11-28 13:54:10.474290420 +0200
+++ /etc/asterisk/extensions.conf	2014-11-28 13:54:37.338291273 +0200
@@ -111,7 +111,7 @@
 
 [international]
 
-exten => _[12][123]XX,1,Dial(SIP/ny/${EXTEN})
+exten => _[125][123]XX,1,Dial(SIP/ny/${EXTEN})
 
 [gr1]
 
прошло 40 минут
12:54:37
#asterisk -rvvv
Asterisk 1.8.13.1~dfsg1-3+deb7u3, Copyright (C) 1999 - 2012 Digium, Inc. and others.
Created by Mark Spencer <markster@digium.com>
Asterisk comes with ABSOLUTELY NO WARRANTY; type 'core show warranty' for details.
This is free software, with components licensed under the GNU General Public
License version 2 and other licenses; you are welcome to redistribute it under
certain conditions. Type 'core show license' for details.
=========================================================================
  == Parsing '/etc/asterisk/asterisk.conf':   == Found
  == Parsing '/etc/asterisk/extconfig.conf':   == Found
Connected to Asterisk 1.8.13.1~dfsg1-3+deb7u3 currently running on debian8 (pid = 2432)
...
    -- Registered extension context 'app_dial_gosub_virtual_context'; registrar: app_dial
    -- merging incls/swits/igpats from old(app_dial_gosub_virtual_context) to new(app_dial_gosub_virtual_context) context, registrar = pbx_config
    -- Added extension 's' priority 1 to app_dial_gosub_virtual_context
    -- Time to scan old dialplan and merge leftovers back into the new: 0.000816 sec
    -- Time to restore hints and swap in new dialplan: 0.000002 sec
    -- Time to delete the old dialplan: 0.000059 sec
    -- Total time merge_contexts_delete: 0.000877 sec
debian8*CLI>
Disconnected from Asterisk server
Executing last minute cleanups
12:54:49
#vi /etc/asterisk/extensions.conf
--- /tmp/l3-saved-3744.396.16253	2014-11-28 13:55:06.206292190 +0200
+++ /etc/asterisk/extensions.conf	2014-11-28 13:56:25.350294705 +0200
@@ -111,7 +111,8 @@
 
 [international]
 
-exten => _[125][123]XX,1,Dial(SIP/ny/${EXTEN})
+exten => _[12][123]XX,1,Dial(SIP/ny/${EXTEN})
+exten => _5XXX,1,Dial(SIP/ny/${EXTEN})
 
 [gr1]
 
13:00:08
#vi /etc/asterisk/extensions.conf
--- /tmp/l3-saved-3744.1974.19363	2014-11-28 14:00:09.130301814 +0200
+++ /etc/asterisk/extensions.conf	2014-11-28 14:00:19.510302144 +0200
@@ -112,7 +112,7 @@
 [international]
 
 exten => _[12][123]XX,1,Dial(SIP/ny/${EXTEN})
-exten => _5XXX,1,Dial(SIP/ny/${EXTEN})
+;exten => _5XXX,1,Dial(SIP/ny/${EXTEN})
 exten => _5XXX,1,Dial(SIP/atlanta/${EXTEN})
 
 [gr1]
/dev/pts/6
13:01:24
#vim /etc/asterisk/extensions.conf
--- /tmp/l3-saved-7583.25293.7852	2014-11-28 14:01:29.850304378 +0200
+++ /etc/asterisk/extensions.conf	2014-11-28 14:02:09.158305627 +0200
@@ -113,6 +113,8 @@
 
 exten => _[12][123]XX,1,Dial(SIP/ny/${EXTEN})
 ;exten => _5XXX,1,Dial(SIP/ny/${EXTEN})
+; ????
+; почему атланта здесь, если на 22 идёт через ny?
 exten => _5XXX,1,Dial(SIP/atlanta/${EXTEN})
 
 [gr1]
13:02:09
#vim /etc/asterisk/extensions.conf
/dev/pts/4
13:02:39
#vi /etc/asterisk/extensions.conf
--- /tmp/l3-saved-3744.17322.523	2014-11-28 14:02:40.234306614 +0200
+++ /etc/asterisk/extensions.conf	2014-11-28 14:03:02.470307321 +0200
@@ -112,10 +112,8 @@
 [international]
 
 exten => _[12][123]XX,1,Dial(SIP/ny/${EXTEN})
-;exten => _5XXX,1,Dial(SIP/ny/${EXTEN})
-; ????
-; почему атланта здесь, если на 22 идёт через ny?
-exten => _5XXX,1,Dial(SIP/atlanta/${EXTEN})
+exten => _5XXX,1,Dial(SIP/ny/${EXTEN})
+;exten => _5XXX,1,Dial(SIP/atlanta/${EXTEN})
 
 [gr1]
 
13:08:10
#scp root@192.168.50.1://etc/asterisk/extensions.conf
\                  .bash_profile      .config/           .l3rc              .ssh/
.aptitude/         .bashrc            dahdi-linux/       .lilalo/           .subversion/
.asterisk_history  .cache/            .dbus/             .profile           trunk/
aster-tips/        chan-datacard/     ert                .pulse-cookie      .viminfo
.bash_history      chan-dongle/       .gconf/            .rnd
13:08:10
#scp root@192.168.50.1://etc/asterisk/extensions.conf example
The authenticity of host '192.168.50.1 (192.168.50.1)' can't be established.
ECDSA key fingerprint is 2f:55:30:bf:42:64:f6:ec:16:a0:57:a3:f2:87:cb:69.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '192.168.50.1' (ECDSA) to the list of known hosts.
root@192.168.50.1's password:
extensions.conf                                                    100% 8773     8.6KB/s   00:00
13:09:38
#cat example
; контекст плана звонков default
[default]
; Dial приложение (позвонить)
; SIP/ название канала, куда его нужно перенаправить
; $ - значение переменной {EXTEN}
; создаем меню для колл-центра
[menu]
; s - это специальный extentsion
; Playback не обрабатывает нажатия
; Wait тоже
...
[gsm-incoming]
; ${DONGLENUMBER}  -- номер на который пришёл звонок
; как сделать красивый маппинг?
; +380501234567 => 3301
; +380502233445 => 3302
; через базу данных:
; database set gsm-incoming +380501234567 3301
; database set gsm-incoming +380502233445 3302
; и используете в диалплане так:
; Dial(SIP/${DB(gsm-incoming/${DONGLENUMBER})})
13:09:43
#scp root@192.168.50.1://etc/asterisk/extensions.conf example
root@192.168.50.1's password:
extensions.conf                                                    100% 8773     8.6KB/s   00:00
13:12:24
#ls -ls
total 40
 4 -rw-r--r-- 1 root root  811 Nov 26 12:03 \
 4 drwxr-xr-x 2 root root 4096 Nov 28 10:23 aster-tips
 4 drwxr-xr-x 5 root root 4096 Nov 27 16:52 chan-datacard
 4 drwxr-xr-x 8 root root 4096 Nov 27 16:55 chan-dongle
 4 drwxr-xr-x 6 root root 4096 Nov 28 11:40 dahdi-linux
 4 -rw-r--r-- 1 root root    6 Nov 26 17:03 ert
12 -rw-r--r-- 1 root root 8773 Nov 28 14:12 example
 4 drwxr-xr-x 4 root root 4096 Nov 27 16:48 trunk
13:12:28
#mv example aster-tips/analog_example

13:12:50
#ls -ls aster-tips/
total 16
12 -rw-r--r-- 1 root root 8773 Nov 28 14:12 analog_example
 4 -rw-r--r-- 1 root root 1039 Nov 28 10:23 mapping

Файлы

  • /tmp/call.call
  • example
  • /tmp/call.call
    >
    example
    >
    ; контекст плана звонков default
    [default]
    ; Dial приложение (позвонить)
    ; SIP/ название канала, куда его нужно перенаправить
    ; $ - значение переменной {EXTEN}
    ; создаем меню для колл-центра
    [menu]
    ; s - это специальный extentsion
    ; Playback не обрабатывает нажатия
    ; Wait тоже
    ; аналоги которые обрабатывают:
    ; Background
    ; WaitExten
    ; проигрываем приветствие и пункты меню (Background)
    ; с возможностью выбора (WaitExten)
    exten => s,1,Answer
    exten => s,n,Background(/var/tmp/asterisk/record01)
    exten => s,n,WaitExten(1)
    ; метка (labels), ставятся с помощью скобочек после n
    exten => s,n(start),Background(/var/tmp/asterisk/record02)
    exten => s,n,WaitExten(3)
    exten => s,n,Background(/var/tmp/asterisk/record03)
    exten => s,n,WaitExten(3)
    exten => s,n,Background(/var/tmp/asterisk/record04)
    exten => s,n,Hangup
    ; переходим на submenu
    exten => 1,1,Goto(submenu,s,1)
    ; при нажатии 3 - проигрываем exten => 3 (record05) "введите номер заказа"
    ; читаем нажатие кнопок на телефоне и пишем их в переменную ORDER
    exten => 3,1,Playback(/var/tmp/asterisk/record05)
    exten => 3,n,Read(ORDER)
    ; проговариваем record07 "ваш заказ №"
    exten => 3,n,Playback(/var/tmp/asterisk/record07)
    ; проговариваем переменную ORDER
    exten => 3,n,SayDigits(${ORDER})
    ; обращение к БД из плана набора:
    ; ${DB(db_name/key)}
    ; dn_name = order в нашем случае
    ; key = в нашем случае введённый номер заказа
    ; довольно хитрая конструкция:
    ; $[ a = b ]? label
    exten => 3,n,GotoIf($["${DB(order/${ORDER})}" = ""]?unknown_order)
    exten => 3,n,Playback(/var/tmp/asterisk/record${DB(order/${ORDER})})
    exten => 3,n,Hangup
    exten => 3,n(unknown_order),Playback(/var/tmp/asterisk/record08)
    ; если нажали цифру 4 - то переходим на вызов оператора
    ; попадаем на очередь (Queue), имя очереди queue1
    exten => 4,1,Answer
    exten => 4,n,Queue(queue1)
    ; при нажатии на 0 на телефоне перейти на (Goto)
    ; Goto поддерживает три варианта описания координат:
    ; context,extension,label
    ; extension,label
    ; label
    exten => 0,1,Goto(s,start)
    ; неверный выбор
    ; i - invalid (extension)
    ; проиграть запись record06 ""
    ; подождать 2 секунды
    ; перейти на метку (s,start)
    exten => i,1,Playback(/var/tmp/asterisk/record06)
    exten => i,n,WaitExten(2)
    [submenu]
    exten => s,1,Background(/var/tmp/asterisk/record11)
    exten => s,n,WaitExten(6)
    exten => s,n,Background(/var/tmp/asterisk/record03)
    exten => s,n,WaitExten(6)
    exten => s,n,Background(/var/tmp/asterisk/record04)
    exten => s,n,Hangup
    ;exten => s,n,Goto(menu,s,start)
    ; при нажатии 1 - проигрываем exten => 1
    ; при нажатии 2 - проигрываем exten => 2
    exten => 1,1,AGI(/usr/local/bin/asterisk-festival.pl,/var/tmp/belki.txt)
    exten => 2,1,AGI(/usr/local/bin/asterisk-festival.pl,/var/tmp/burunduki.txt)
    ;======= группы звонков =====
    [internal]
    ; управление операционной системой
    exten => 8400,1,System(touch /tmp/someone-called-8400)
    exten => 8401,1,System(sh -c "echo ${CALLERID(num)} > /tmp/someone-called-8401")
    exten => 8402,1,System(sudo /etc/init.d/sendmail restart)
    ; парковка вызова, в Dial добавить опцию kK
    include => parkedcalls
    ; звонок на группу номеров
    exten => 2289,1,Dial(SIP/london/3201&SIP/london/3202)
    ; сначала записать сообщение, затем сразу его проиграть на том-же номере
    exten => _81XX,1,Record(/var/tmp/asterisk/record${EXTEN:2}:gsm,3)
    exten => _81XX,n,Playback(/var/tmp/asterisk/record${EXTEN:2})
    ;exten => _81XX,1,Record(/var/tmp/asterisk/record${EXTEN:2}:gsm)
    ;exten => _82XX,1,Playback(/var/tmp/asterisk/record${EXTEN:2})
    ; создаем конференц комнаты
    ; комнаты 100-109
    exten => _801X,1,MeetMe(10${EXTEN:3})
    ; сразу переход на свой голосовой почтовый ящик c запросом пароля
    exten => _83XX,1,VoiceMailMain(22${EXTEN:2}@default)
    ; сразу переход на свой голосовой почтовый ящик без запроса пароля
    ;exten => _83XX,1,VoiceMailMain(22${EXTEN:2}@default,s)
    ; сразу переход на свой голосовой почтовый ящик без запроса пароля
    ;exten => _83XX,1,VoiceMailMain(22${EXTEN:2}@default,s)
    ;
    ;
    exten => 8403,1,AGI(/usr/local/bin/asterisk-festival.pl,/var/tmp/belki.txt)
    exten => 8404,1,AGI(/usr/local/bin/asterisk-festival.pl,/var/tmp/burunduki.txt)
    ; приходящий вызов на меню
    exten => 8405,1,Goto(menu,s,1)
    ; правило регистрации Агента в астериске
    exten => 8407,1,AgentLogin(007)
    ; перенаправлени звонка на мобильный, если не подняли трубку через 5 сек
    ; exten => _33XX,1,Dial(SIP/${EXTEN},5)
    ; exten => _33XX,n,Dial(SIP/${DB(redirect/${EXTEN})})
    ; только сначала нужно прописать мобильные телефоны в базе redirect:
    ; asterisk -rx " database put redirect 3301 +380503322117"
    [local]
    ;разрешаем трансфер номера, в Dial добавить опцию tT
    ; запись звонков
    exten => _22XX,1,NoOp(запись звонков)
    ; Monitor - программа записи взонков
    ; CALLFILENAME - новая (любая) переменная
    ; m - микшировать оба звуковых потока
    ; set- записать в переменную CALLFILENAME, все что после
    exten => _22XX,n,Set(CALLFILENAME=${EXTEN}-${CALLERID(num)}-${STRFTIME(${EPOCH},Europe/Kiev,"%Y-%m-%d-%H:%M:%S")})
    exten => _22XX,n,Monitor(wav,${CALLFILENAME},m)
    exten => _22XX,n,Dial(SIP/${EXTEN},10,tTkK)
    ; международная конференция
    exten => _229X,1,NoOp(Conferences for external users)
    exten => _229X,n,MeetMe(10${EXTEN:3})
    ; Hangup - гарантировано повесить трубку по окончанию конференции
    exten => _229X,n,Hangupi
    ; использование переменной ${EXTEN}
    ;exten => _22XX,1,NoOp(Starting call processing)
    ;exten => _22XX,n,NoOp(to extension {EXTEN})
    ;exten => _22XX,n,Dial(SIP/${EXTEN},5)
    ; если через 5 сек не подняли трубку тогда переходим на голосовую почту
    ; включить головую почту, в ящик ${EXTEN}
    exten => _22XX,n,VoiceMail(22${EXTEN:2}@default)
    [national]
    exten => _21XX,1,Dial(SIP/ny/${EXTEN})
    exten => _1XXX,1,Dial(SIP/ny/${EXTEN})
    [to-pstn]
    ; DAHDI == название канала (chan_dahdi)
    ; g1 == название группы (группа 1)
    ; ${EXTEN} == номер телефона, на который идёт звонок
    ; выход на АТС через 9-ку
    exten => _9XXXX,1,Dial(DAHDI/g1/${EXTEN:1})
    [to-pstn-external]
    exten => _5XXX,1,Dial(DAHDI/g1/${EXTEN})
    [international]
    exten => _3XXX,1,Dial(SIP/london/${EXTEN})
    exten => _23XX,1,Dial(SIP/london/${EXTEN})
    [gr1]
    include => to-pstn
    include => internal
    include => local
    include => national
    include => international
    [gr2]
    include => to-pstn
    include => internal
    include => local
    include => national
    [gr3]
    include => to-pstn
    include => internal
    include => local
    ; для транзитных звонков
    [gr4]
    include => to-pstn-external
    include => international
    [from-pstn]
    include => internal
    include => local
    include => national
    include => international
    ; использование same
    ;exten => _22XX,1,NoOp(Starting call processing)
    ; same =>       n,NoOp(to extension {EXTEN})
    ; same =>       n,Dial(SIP/${EXTEN})
    [gsm-incoming]
    ; ${DONGLENUMBER}  -- номер на который пришёл звонок
    ; как сделать красивый маппинг?
    ; +380501234567 => 3301
    ; +380502233445 => 3302
    ; через базу данных:
    ; database set gsm-incoming +380501234567 3301
    ; database set gsm-incoming +380502233445 3302
    ; и используете в диалплане так:
    ; Dial(SIP/${DB(gsm-incoming/${DONGLENUMBER})})
    

    Статистика

    Время первой команды журнала15:11:43 2014-11-27
    Время последней команды журнала13:12:50 2014-11-28
    Количество командных строк в журнале101
    Процент команд с ненулевым кодом завершения, %13.86
    Процент синтаксически неверно набранных команд, % 1.98
    Суммарное время работы с терминалом *, час 2.20
    Количество командных строк в единицу времени, команда/мин 0.76
    Частота использования команд
    ls18|================| 16.98%
    vi11|==========| 10.38%
    cd10|=========| 9.43%
    cat6|=====| 5.66%
    make5|====| 4.72%
    apt-get5|====| 4.72%
    call.call4|===| 3.77%
    configure3|==| 2.83%
    #3|==| 2.83%
    svn3|==| 2.83%
    vim3|==| 2.83%
    scp3|==| 2.83%
    grep3|==| 2.83%
    asterisk2|=| 1.89%
    screen2|=| 1.89%
    lsusb2|=| 1.89%
    cp2|=| 1.89%
    mv2|=| 1.89%
    lspci2|=| 1.89%
    autoconf1|| 0.94%
    mkdir1|| 0.94%
    /etc/init.d/asterisk1|| 0.94%
    /lls1|| 0.94%
    git1|| 0.94%
    find1|| 0.94%
    aclocal1|| 0.94%
    automake1|| 0.94%
    modinfo1|| 0.94%
    chown1|| 0.94%
    #новый1|| 0.94%
    call.all1|| 0.94%
    less1|| 0.94%
    â„#1|| 0.94%
    ^C1|| 0.94%
    ./contrib/1|| 0.94%
    you1|| 0.94%
    ____
    *) Интервалы неактивности длительностью 30 минут и более не учитываются

    Справка

    Для того чтобы использовать LiLaLo, не нужно знать ничего особенного: всё происходит само собой. Однако, чтобы ведение и последующее использование журналов было как можно более эффективным, желательно иметь в виду следующее:
    1. В журнал автоматически попадают все команды, данные в любом терминале системы.

    2. Для того чтобы убедиться, что журнал на текущем терминале ведётся, и команды записываются, дайте команду w. В поле WHAT, соответствующем текущему терминалу, должна быть указана программа script.

    3. Команды, при наборе которых были допущены синтаксические ошибки, выводятся перечёркнутым текстом:
      $ l s-l
      bash: l: command not found
      

    4. Если код завершения команды равен нулю, команда была выполнена без ошибок. Команды, код завершения которых отличен от нуля, выделяются цветом.
      $ test 5 -lt 4
      Обратите внимание на то, что код завершения команды может быть отличен от нуля не только в тех случаях, когда команда была выполнена с ошибкой. Многие команды используют код завершения, например, для того чтобы показать результаты проверки

    5. Команды, ход выполнения которых был прерван пользователем, выделяются цветом.
      $ find / -name abc
      find: /home/devi-orig/.gnome2: Keine Berechtigung
      find: /home/devi-orig/.gnome2_private: Keine Berechtigung
      find: /home/devi-orig/.nautilus/metafiles: Keine Berechtigung
      find: /home/devi-orig/.metacity: Keine Berechtigung
      find: /home/devi-orig/.inkscape: Keine Berechtigung
      ^C
      

    6. Команды, выполненные с привилегиями суперпользователя, выделяются слева красной чертой.
      # id
      uid=0(root) gid=0(root) Gruppen=0(root)
      

    7. Изменения, внесённые в текстовый файл с помощью редактора, запоминаются и показываются в журнале в формате ed. Строки, начинающиеся символом "<", удалены, а строки, начинающиеся символом ">" -- добавлены.
      $ vi ~/.bashrc
      2a3,5
      >    if [ -f /usr/local/etc/bash_completion ]; then
      >         . /usr/local/etc/bash_completion
      >        fi
      

    8. Для того чтобы изменить файл в соответствии с показанными в диффшоте изменениями, можно воспользоваться командой patch. Нужно скопировать изменения, запустить программу patch, указав в качестве её аргумента файл, к которому применяются изменения, и всавить скопированный текст:
      $ patch ~/.bashrc
      В данном случае изменения применяются к файлу ~/.bashrc

    9. Для того чтобы получить краткую справочную информацию о команде, нужно подвести к ней мышь. Во всплывающей подсказке появится краткое описание команды.

      Если справочная информация о команде есть, команда выделяется голубым фоном, например: vi. Если справочная информация отсутствует, команда выделяется розовым фоном, например: notepad.exe. Справочная информация может отсутствовать в том случае, если (1) команда введена неверно; (2) если распознавание команды LiLaLo выполнено неверно; (3) если информация о команде неизвестна LiLaLo. Последнее возможно для редких команд.

    10. Большие, в особенности многострочные, всплывающие подсказки лучше всего показываются браузерами KDE Konqueror, Apple Safari и Microsoft Internet Explorer. В браузерах Mozilla и Firefox они отображаются не полностью, а вместо перевода строки выводится специальный символ.

    11. Время ввода команды, показанное в журнале, соответствует времени начала ввода командной строки, которое равно тому моменту, когда на терминале появилось приглашение интерпретатора

    12. Имя терминала, на котором была введена команда, показано в специальном блоке. Этот блок показывается только в том случае, если терминал текущей команды отличается от терминала предыдущей.

    13. Вывод не интересующих вас в настоящий момент элементов журнала, таких как время, имя терминала и других, можно отключить. Для этого нужно воспользоваться формой управления журналом вверху страницы.

    14. Небольшие комментарии к командам можно вставлять прямо из командной строки. Комментарий вводится прямо в командную строку, после символов #^ или #v. Символы ^ и v показывают направление выбора команды, к которой относится комментарий: ^ - к предыдущей, v - к следующей. Например, если в командной строке было введено:

      $ whoami
      
      user
      
      $ #^ Интересно, кто я?
      
      в журнале это будет выглядеть так:
      $ whoami
      
      user
      
      Интересно, кто я?

    15. Если комментарий содержит несколько строк, его можно вставить в журнал следующим образом:

      $ whoami
      
      user
      
      $ cat > /dev/null #^ Интересно, кто я?
      
      Программа whoami выводит имя пользователя, под которым 
      мы зарегистрировались в системе.
      -
      Она не может ответить на вопрос о нашем назначении 
      в этом мире.
      
      В журнале это будет выглядеть так:
      $ whoami
      user
      
      Интересно, кто я?
      Программа whoami выводит имя пользователя, под которым
      мы зарегистрировались в системе.

      Она не может ответить на вопрос о нашем назначении
      в этом мире.
      Для разделения нескольких абзацев между собой используйте символ "-", один в строке.

    16. Комментарии, не относящиеся непосредственно ни к какой из команд, добавляются точно таким же способом, только вместо симолов #^ или #v нужно использовать символы #=

    17. Содержимое файла может быть показано в журнале. Для этого его нужно вывести с помощью программы cat. Если вывод команды отметить симоволами #!, содержимое файла будет показано в журнале в специально отведённой для этого секции.
    18. Для того чтобы вставить скриншот интересующего вас окна в журнал, нужно воспользоваться командой l3shot. После того как команда вызвана, нужно с помощью мыши выбрать окно, которое должно быть в журнале.
    19. Команды в журнале расположены в хронологическом порядке. Если две команды давались одна за другой, но на разных терминалах, в журнале они будут рядом, даже если они не имеют друг к другу никакого отношения.
      1
          2
      3   
          4
      
      Группы команд, выполненных на разных терминалах, разделяются специальной линией. Под этой линией в правом углу показано имя терминала, на котором выполнялись команды. Для того чтобы посмотреть команды только одного сенса, нужно щёкнуть по этому названию.

    О программе

    LiLaLo (L3) расшифровывается как Live Lab Log.
    Программа разработана для повышения эффективности обучения Unix/Linux-системам.
    (c) Игорь Чубин, 2004-2008

    $Id$