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

Содержание

Журнал

Среда (11/26/14)

/dev/pts/5
15:26:14
#_ Парковка Ðвызова

15:30:21
#;comebacktoorigin = yes ; Setting this option configures the behavior of call parking when the
; испорчу файл но он будет выглядеть как будто так и надо
; типичная ошибка
; у вас сейчас здесь одна строка а выглядит как две
; ещё может быть линия из скрина как я нарисовал
; как бороться?
; включаете number в vim:
; :set number
; и всё сразу же видно
[default]
; конекст default теперь пуст
...
; exten => 8002,1,Answer
; exten => 8002,n,...
; exten => 8002,n,Set(CHANNEL(language)=ru)
; exten => 8002,n,...
; 8010 => комната 100
; 8015 => комната 115
; так 10 разных комнат
; 10 это для примера
exten => _801X,1,MeetMe(10${EXTEN:3})
[local]
15:32:07
#vim /etc/asterisk/features.conf
15:32:55
#[ ]
3: nclude => parkedcalls
4: include => parkedcalls
6: include => parkedcalls
7: include => parkedcalls
8: include => parkedcalls
8: include => parkedcalls
15:33:06
#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 debian0 (pid = 15667)
...
Call parking (Parking lot: default)
------------
Parking extension     :      700
Parking context       :      parkedcalls
Parked call extensions:      701-720
Parkingtime           :      45000 ms
MusicOnHold class     :      default
Enabled               :      Yes
debian0*CLI> quit
Executing last minute cleanups
15:35:33
#vim /etc/asterisk/features.conf
--- /tmp/l3-saved-3108.1356.7713	2014-11-26 09:35:40.533928951 -0500
+++ /etc/asterisk/features.conf	2014-11-26 09:38:44.637934515 -0500
@@ -128,7 +128,7 @@
 
 ; это управляемый перевод
 atxfer => *2                   ; Attended transfer  -- Make sure to set the T and/or t option in the Dial() or Queue()  app call!
-;parkcall => #72                ; Park call (one step parking)  -- Make sure to set the K and/or k option in the Dial() app call!
+parkcall => #700                ; Park call (one step parking)  -- Make sure to set the K and/or k option in the Dial() app call!
 ;automixmon => *3               ; One Touch Record a.k.a. Touch MixMonitor -- Make sure to set the X and/or x option in the Dial() or Queue() app call!
 
 [applicationmap]
15:38:44
#all 'grep kK /etc/asterisk/extensions.conf' | ff
5: ; парковка вызова, в конец после Dial добавить kK
5: exten => _22XX,n,Dial(SIP/${EXTEN},10,tT,kK)
7: exten => _31XX,n,Dial(SIP/${EXTEN},30,tT,kK)
8: exten => _32XX,n,Dial(SIP/${EXTEN},20,tT,kK)
15:38:53
## не надо запятую межту tT и кK; должно быть tTkK

15:40:15
#_ +5
+5
15:41:02
#_ +8
+8
15:41:04
#_ +4
+4
15:41:09
#_ +7
+7
15:43:41
#_ +1
+1
15:44:05
#_ last
Парковка вызова                                    1:OK 2:OK 3:-- 4:OK 5:OK 6:-- 7:OK 8:OK
15:44:09
#_ +6
+6
15:44:18
#_ last
Парковка вызова                                    1:OK 2:OK 3:-- 4:OK 5:OK 6:OK 7:OK 8:OK
15:44:19
#_ +3
+3
15:46:12
#_ last
Парковка вызова                                    1:OK 2:OK 3:OK 4:OK 5:OK 6:OK 7:OK 8:OK
15:46:15
#_ done

15:53:42
#_ Интеграция Астериск а с операционной системой

15:53:58
#vim /etc/asterisk/extensions.conf
--- /tmp/l3-saved-3108.23033.7615	2014-11-26 09:54:13.473962582 -0500
+++ /etc/asterisk/extensions.conf	2014-11-26 09:56:54.241967440 -0500
@@ -33,14 +33,17 @@
 ; 10 это для примера
 exten => _801X,1,MeetMe(10${EXTEN:3})
 
-include => parkedcalls
+exten => 8300,1,System(touch /tmp/someone-called-8300)
+exten => 8301,1,System(echo ${CALLERID(num)} > /tmp/someone-called-8301)
+exten => 8302,1,System(sudo /etc/init.d/sendmail restart)
+
 
 [local]
 
 ; испорчу файл но он будет выглядеть как будто так и надо
 ; типичная ошибка
 ; у вас сейчас здесь одна строка а выглядит как две
-; ещё может быть линия из скрина как я нарисовал
+ ещё может быть линия из скрина как я нарисовал
 ; как бороться?
 ; включаете number в vim:
 ; :set number
15:56:54
#all 'grep System /etc/asterisk/extensions.conf' | ff

15:57:04
#_ last
Интеграция Астериска с операционной системой       1:-- 2:-- 3:-- 4:-- 5:-- 6:-- 7:-- 8:--
15:57:10
#all 'grep System /etc/asterisk/extensions.conf' | ff
8: exten => 8300,1,System(touch /tmp/someone-called-8300)
8: exten => 8301,1,System(echo $(CALLERID(num)} > /tmp/someone-called-8301)
8: exten => 8302,1,System(sudo /etc/init.d/sendmail restart)
15:57:13
#all 'ls /tmp/someone*'
1: ls: cannot access /tmp/someone*: No such file or directory
2: ls: cannot access /tmp/someone*: No such file or directory
3: ls: cannot access /tmp/someone*: No such file or directory
4: ls: cannot access /tmp/someone*: No such file or directory
5: /tmp/someone-called-8300
6: ls: cannot access /tmp/someone*: No such file or directory
7: ls: cannot access /tmp/someone*: No such file or directory
8: /tmp/someone-called-8300
15:57:37
#all 'ls /tmp/someone*'
1: ls: cannot access /tmp/someone*: No such file or directory
2: ls: cannot access /tmp/someone*: No such file or directory
3: ls: cannot access /tmp/someone*: No such file or directory
4: ls: cannot access /tmp/someone*: No such file or directory
5: /tmp/someone-called-8300
6: ls: cannot access /tmp/someone*: No such file or directory
7: ls: cannot access /tmp/someone*: No such file or directory
8: /tmp/someone-called-8300
15:57:53
#all 'ls /tmp/someone*'
1: ls: cannot access /tmp/someone*: No such file or directory
2: ls: cannot access /tmp/someone*: No such file or directory
3: ls: cannot access /tmp/someone*: No such file or directory
4: ls: cannot access /tmp/someone*: No such file or directory
5: /tmp/someone-called-8300
6: ls: cannot access /tmp/someone*: No such file or directory
7: ls: cannot access /tmp/someone*: No such file or directory
8: /tmp/someone-called-8300
15:58:11
#all 'ls /tmp/someone*'
1: ls: cannot access /tmp/someone*: No such file or directory
2: ls: cannot access /tmp/someone*: No such file or directory
3: ls: cannot access /tmp/someone*: No such file or directory
4: ls: cannot access /tmp/someone*: No such file or directory
5: /tmp/someone-called-8300
6: ls: cannot access /tmp/someone*: No such file or directory
7: ls: cannot access /tmp/someone*: No such file or directory
8: /tmp/someone-called-8300
15:58:22
#all 'ls /tmp/someone*'
1: ls: cannot access /tmp/someone*: No such file or directory
2: ls: cannot access /tmp/someone*: No such file or directory
3: ls: cannot access /tmp/someone*: No such file or directory
4: ls: cannot access /tmp/someone*: No such file or directory
5: /tmp/someone-called-8300
6: /tmp/someone-called-8300
6: /tmp/someone-called-8301
7: ls: cannot access /tmp/someone*: No such file or directory
8: /tmp/someone-called-8300
8: /tmp/someone-called-8301
15:59:36
#ps aux | grep asterisk
asterisk 15667  0.2  0.1 784380 31436 ?        Ssl  07:26   0:24 /usr/sbin/asterisk -p -U asterisk
asterisk 15668  0.0  0.0  13916   772 ?        S    07:26   0:00 astcanary /var/run/asterisk/alt.asterisk.canary.tweet.tweet.tweet 15667
root     18280  0.0  0.0  52616  2112 pts/13   S+   09:59   0:00 sudo vim /etc/asterisk/extensions.conf
root     18281  0.0  0.0  31644  2864 pts/13   S+   09:59   0:00 vim /etc/asterisk/extensions.conf
root     18330  0.0  0.0   7840   884 pts/3    S+   09:59   0:00 grep asterisk
im /etc/sudoers
15:59:40
## asterisk пользователь поÑд которым выполняется asterisk

15:59:55
#vim /etc/sudoers
--- /tmp/l3-saved-3108.14741.13439	2014-11-26 09:59:59.873973050 -0500
+++ /etc/sudoers	2014-11-26 10:00:24.681973800 -0500
@@ -18,6 +18,7 @@
 
 # User privilege specification
 user	ALL=(ALL:ALL) ALL
+asterisk ALL=(ALL) NOPASSWD: /etc/init.d/sendmail
 
 # Allow members of group sudo to execute any command
 %sudo	ALL=(ALL:ALL) ALL
16:00:25
#grep asterisk /etc/sudoers
asterisk ALL=(ALL) NOPASSWD: /etc/init.d/sendmail
16:00:33
## прописываете asterisk в /etc/sudoers

16:00:43
## точтобы он мог выполнять нужную вам команду

16:00:51
## обратите внимание на NOPASSWD:

16:01:01
#прÐgrep asterisk /etc/sudoers'
7: asterisk     ALL=(ALL:ALL) ALL
16:01:27
#all 'ps aux | grep sendmail'
1: root     11560  0.0  0.0  74624  2968 ?        Ss   Nov25   0:02 sendmail: MTA: accepting connections
1: root     24436  0.0  0.0  10848  1540 ?        Ss   17:01   0:00 bash -c ps aux | grep sendmail
1: root     24440  0.0  0.0   7836   888 ?        S    17:01   0:00 grep sendmail
2: root     10572  0.0  0.0  74624  2968 ?        Ss   Nov25   0:02 sendmail: MTA: accepting connections
2: root     24708  0.0  0.0  10848  1544 ?        Ss   17:01   0:00 bash -c ps aux | grep sendmail
2: root     24712  0.0  0.0   7840   888 ?        S    17:01   0:00 grep sendmail
3: root      2721  0.0  0.0  74612  2940 ?        Ss   13:09   0:00 sendmail: MTA: accepting connections
3: root     11872  0.0  0.0  10848  1544 ?        Ss   17:01   0:00 bash -c ps aux | grep sendmail
3: root     11876  0.0  0.0   7840   892 ?        S    17:01   0:00 grep sendmail
4: root     18407  0.0  0.0  74624  2972 ?        Ss   11:10   0:00 sendmail: MTA: accepting connections
...
5: root     25369  0.0  0.0  74620  2968 ?        Ss   10:49   0:00 sendmail: MTA: accepting connections
6: root      2657  0.0  0.0  74612  2932 ?        Ss   15:07   0:00 sendmail: MTA: accepting connections
6: root      5084  0.0  0.0  10848  1544 ?        Ss   17:01   0:00 bash -c ps aux | grep sendmail
6: root      5088  0.0  0.0   7840   892 ?        S    17:01   0:00 grep sendmail
7: root      2689  0.0  0.0  74616  2940 ?        Ss   09:22   0:00 sendmail: MTA: accepting connections
7: root     19932  0.0  0.0  10848  1544 ?        Ss   17:01   0:00 bash -c ps aux | grep sendmail
7: root     19936  0.0  0.0   7840   888 ?        S    17:01   0:00 grep sendmail
8: root      2515  0.0  0.0  74616  2940 ?        Ss   09:25   0:00 sendmail: MTA: accepting connections
8: root     14335  0.0  0.0  10848  1540 ?        Ss   17:01   0:00 bash -c ps aux | grep sendmail
8: root     14339  0.0  0.0   7840   892 ?        S    17:01   0:00 grep sendmail
16:01:41
#date
Wed Nov 26 10:01:44 EST 2014
16:01:44
#all 'ps aux | grep [s]endmail'
1: root     11560  0.0  0.0  74624  2968 ?        Ss   Nov25   0:02 sendmail: MTA: accepting connections
2: root     10572  0.0  0.0  74624  2968 ?        Ss   Nov25   0:02 sendmail: MTA: accepting connections
3: root      2721  0.0  0.0  74612  2940 ?        Ss   13:09   0:00 sendmail: MTA: accepting connections
4: root     18407  0.0  0.0  74624  2972 ?        Ss   11:10   0:00 sendmail: MTA: accepting connections
5: root     25369  0.0  0.0  74620  2968 ?        Ss   10:49   0:00 sendmail: MTA: accepting connections
6: root      2657  0.0  0.0  74612  2932 ?        Ss   15:07   0:00 sendmail: MTA: accepting connections
7: root      2689  0.0  0.0  74616  2940 ?        Ss   09:22   0:00 sendmail: MTA: accepting connections
8: root      2515  0.0  0.0  74616  2940 ?        Ss   09:25   0:00 sendmail: MTA: accepting connections
16:02:02
#all 'ps aux | grep [s]endmail'
1: root     11560  0.0  0.0  74624  2968 ?        Ss   Nov25   0:02 sendmail: MTA: accepting connections
2: root     10572  0.0  0.0  74624  2968 ?        Ss   Nov25   0:02 sendmail: MTA: accepting connections
3: root      2721  0.0  0.0  74612  2940 ?        Ss   13:09   0:00 sendmail: MTA: accepting connections
4: root     18407  0.0  0.0  74624  2972 ?        Ss   11:10   0:00 sendmail: MTA: accepting connections
5: root     25369  0.0  0.0  74620  2968 ?        Ss   10:49   0:00 sendmail: MTA: accepting connections
6: root      2657  0.0  0.0  74612  2932 ?        Ss   15:07   0:00 sendmail: MTA: accepting connections
7: root      2689  0.0  0.0  74616  2940 ?        Ss   09:22   0:00 sendmail: MTA: accepting connections
8: root      2515  0.0  0.0  74616  2940 ?        Ss   09:25   0:00 sendmail: MTA: accepting connections
16:02:45
#vim /etc/asterisk/extensions.conf
--- /tmp/l3-saved-3108.7606.16369	2014-11-26 10:03:42.449979776 -0500
+++ /etc/asterisk/extensions.conf	2014-11-26 10:04:22.449980984 -0500
@@ -34,7 +34,7 @@
 exten => _801X,1,MeetMe(10${EXTEN:3})
 
 exten => 8300,1,System(touch /tmp/someone-called-8300)
-exten => 8301,1,System(echo ${CALLERID(num)} > /tmp/someone-called-8301)
+exten => 8301,1,System(sh -c "echo ${CALLERID(num)} > /tmp/someone-called-8301")
 exten => 8302,1,System(sudo /etc/init.d/sendmail restart)
 
 
16:04:23
#all cat /tmp/someone-called-8302
1: cat: /tmp/someone-called-8302: No such file or directory
2: cat: /tmp/someone-called-8302: No such file or directory
3: cat: /tmp/someone-called-8302: No such file or directory
4: cat: /tmp/someone-called-8302: No such file or directory
5: cat: /tmp/someone-called-8302: No such file or directory
6: cat: /tmp/someone-called-8302: No such file or directory
7: cat: /tmp/someone-called-8302: No such file or directory
8: cat: /tmp/someone-called-8302: No such file or directory
16:05:14
#grep System /etc/asterisk/extensions.conf
exten => 8300,1,System(touch /tmp/someone-called-8300)
exten => 8301,1,System(sh -c "echo ${CALLERID(num)} > /tmp/someone-called-8301")
exten => 8302,1,System(sudo /etc/init.d/sendmail restart)
16:06:24
#vim /etc/asterisk/extensions.conf
--- /tmp/l3-saved-3108.3870.6401	2014-11-26 10:07:30.305986660 -0500
+++ /etc/asterisk/extensions.conf	2014-11-26 10:07:57.345987478 -0500
@@ -33,9 +33,9 @@
 ; 10 это для примера
 exten => _801X,1,MeetMe(10${EXTEN:3})
 
-exten => 8300,1,System(touch /tmp/someone-called-8300)
-exten => 8301,1,System(sh -c "echo ${CALLERID(num)} > /tmp/someone-called-8301")
-exten => 8302,1,System(sudo /etc/init.d/sendmail restart)
+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)
 
 
 [local]
16:07:59
#grep asteriskµ asterisk в /etc/sudoers
asterisk ALL=(ALL) NOPASSWD: /etc/init.d/sendmail
16:09:18
#all 'grep asterisk /etc/sudoers'
6: asterisk ALL=(ALL) NOPASSWD: /etc/init.d/sendmail
7: asterisk     ALL=(ALL:ALL) ALL
16:09:53
#all 'ps aux | grep [s]endmail'
1: root     11560  0.0  0.0  74624  2968 ?        Ss   Nov25   0:02 sendmail: MTA: accepting connections
2: root     10572  0.0  0.0  74624  2968 ?        Ss   Nov25   0:02 sendmail: MTA: accepting connections
3: root      2721  0.0  0.0  74612  2940 ?        Ss   13:09   0:00 sendmail: MTA: accepting connections
4: root     18407  0.0  0.0  74624  2972 ?        Ss   11:10   0:00 sendmail: MTA: accepting connections
5: root     25369  0.0  0.0  74620  2968 ?        Ss   10:49   0:00 sendmail: MTA: accepting connections
6: root      5918  0.0  0.0  74612  2456 ?        Ss   17:13   0:00 sendmail: MTA: accepting connections
7: root     20612  0.0  0.0  74616  2472 ?        Ss   17:09   0:00 sendmail: MTA: accepting connections
8: root     14707  0.0  0.0  74620  2464 ?        Ss   17:10   0:00 sendmail: MTA: accepting connections
16:13:59
#_ +6 +7 +8
+6 +7 +8
16:14:15
#all 'ps aux | grep [s]endmail'
1: root     11560  0.0  0.0  74624  2968 ?        Ss   Nov25   0:02 sendmail: MTA: accepting connections
2: root     10572  0.0  0.0  74624  2968 ?        Ss   Nov25   0:02 sendmail: MTA: accepting connections
3: root      2721  0.0  0.0  74612  2940 ?        Ss   13:09   0:00 sendmail: MTA: accepting connections
4: root     18407  0.0  0.0  74624  2972 ?        Ss   11:10   0:00 sendmail: MTA: accepting connections
5: root     25369  0.0  0.0  74620  2968 ?        Ss   10:49   0:00 sendmail: MTA: accepting connections
6: root      5918  0.0  0.0  74612  2456 ?        Ss   17:13   0:00 sendmail: MTA: accepting connections
7: root     20612  0.0  0.0  74616  2472 ?        Ss   17:09   0:00 sendmail: MTA: accepting connections
8: root     14707  0.0  0.0  74620  2464 ?        Ss   17:10   0:00 sendmail: MTA: accepting connections
16:14:22
#all 'ps aux | grep [s]endmail' | ff
1: root     11560  0.0  0.0  74624  2968 ?        Ss   Nov25   0:02 sendmail: MTA: accepting connections
2: root     10572  0.0  0.0  74624  2968 ?        Ss   Nov25   0:02 sendmail: MTA: accepting connections
3: root      2721  0.0  0.0  74612  2940 ?        Ss   13:09   0:00 sendmail: MTA: accepting connections
4: root     18407  0.0  0.0  74624  2972 ?        Ss   11:10   0:00 sendmail: MTA: accepting connections
5: root     25369  0.0  0.0  74620  2968 ?        Ss   10:49   0:00 sendmail: MTA: accepting connections
16:15:07
#all 'ps aux | grep [s]endmail'
1: root     11560  0.0  0.0  74624  2968 ?        Ss   Nov25   0:02 sendmail: MTA: accepting connections
2: root     10572  0.0  0.0  74624  2968 ?        Ss   Nov25   0:02 sendmail: MTA: accepting connections
3: root      2721  0.0  0.0  74612  2940 ?        Ss   13:09   0:00 sendmail: MTA: accepting connections
4: root     18407  0.0  0.0  74624  2972 ?        Ss   11:10   0:00 sendmail: MTA: accepting connections
5: root      5652  0.0  0.0  74620  2544 ?        Ss   17:14   0:00 sendmail: MTA: accepting connections
6: root      6031  0.0  0.0  74612  2456 ?        Ss   17:14   0:00 sendmail: MTA: accepting connections
7: root     20612  0.0  0.0  74616  2472 ?        Ss   17:09   0:00 sendmail: MTA: accepting connections
8: root     14707  0.0  0.0  74620  2464 ?        Ss   17:10   0:00 sendmail: MTA: accepting connections
16:15:10
#all 'ps aux | grep [s]endmail' | ff
1: root     11560  0.0  0.0  74624  2968 ?        Ss   Nov25   0:02 sendmail: MTA: accepting connections
2: root     10572  0.0  0.0  74624  2968 ?        Ss   Nov25   0:02 sendmail: MTA: accepting connections
3: root      2721  0.0  0.0  74612  2940 ?        Ss   13:09   0:00 sendmail: MTA: accepting connections
4: root     18407  0.0  0.0  74624  2972 ?        Ss   11:10   0:00 sendmail: MTA: accepting connections
5: root      5652  0.0  0.0  74620  2544 ?        Ss   17:14   0:00 sendmail: MTA: accepting connections
16:15:21
#all 'ps aux | grep [s]endmail' | ff
1: root     11560  0.0  0.0  74624  2968 ?        Ss   Nov25   0:02 sendmail: MTA: accepting connections
2: root     10572  0.0  0.0  74624  2968 ?        Ss   Nov25   0:02 sendmail: MTA: accepting connections
3: root     12301  0.0  0.0  74624  2472 ?        Ss   17:15   0:00 sendmail: MTA: accepting connections
4: root     28617  0.0  0.0  74620  2544 ?        Ss   17:15   0:00 sendmail: MTA: accepting connections
16:18:07
#all 'ps aux | grep [s]endmail' | ff
1: root     11560  0.0  0.0  74624  2968 ?        Ss   Nov25   0:02 sendmail: MTA: accepting connections
2: root     10572  0.0  0.0  74624  2968 ?        Ss   Nov25   0:02 sendmail: MTA: accepting connections
16:18:41
#all 'ps aux | grep [s]endmail' | ff
1: root     11560  0.0  0.0  74624  2968 ?        Ss   Nov25   0:02 sendmail: MTA: accepting connections
2: root     10572  0.0  0.0  74624  2968 ?        Ss   Nov25   0:02 sendmail: MTA: accepting connections
16:19:46
#all 'ps aux | grep [s]endmail' | ff
1: root     24857  0.0  0.0  74616  2540 ?        Ss   17:19   0:00 sendmail: MTA: accepting connections
2: root     25146  0.0  0.0  74616  2540 ?        Ss   17:19   0:00 sendmail: MTA: accepting connections
16:20:13
#_ last
Интеграция Астериска с операционной системой       1:OK 2:OK 3:OK 4:OK 5:OK 6:OK 7:OK 8:OK

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

08:36:18
#_ Программная генерация голоса

08:44:27
#apt-cache search festival
brltty-flite - Access software for a blind person - Flite speech driver
eflite - Festival-Lite based emacspeak speech server
festival - General multi-lingual speech synthesis system
festival-dev - Development kit for the Festival speech synthesis system
festival-czech - Czech support for Festival speech synthesis system
festival-doc - Documentation for Festival
festival-freebsoft-utils - Festival extensions and utilities
festival-hi - festival text to speech synthesizer for Hindi language
festvox-hi-nsk - Hindi male speaker for festival
festlex-ifd - Italian support for Festival
...
libgnome-speech7 - GNOME text-to-speech library
libperlspeak-perl - Perl Module for text to speech with festival, espeak, cepstral
pidgin-festival - pidgin plugin to hear incoming messages using voice synthesis
screader - Screen reader using software or hardware speech synthesizer
speech-dispatcher-festival - Festival support for Speech Dispatcher
speechd-up - Interface between Speech Dispatcher and SpeakUp
stardict-plugin-festival - International dictionary - Festival TTS plugin
plasma-widget-translatoid - translation widget for KDE Plasma
writetype - application designed to help students write more easily
yasr - General-purpose console screen reader
08:46:18
#apt-get install festival festvox-ru # инсталлируем фестиваль и горусский голос к нему
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following extra packages will be installed:
  alsa-base alsa-utils esound-common festlex-cmu festlex-poslex festvox-kallpc16k libaudiofile1 libesd0
  libestools2.1
Suggested packages:
  alsa-oss oss-compat pidgin-festival festival-freebsoft-utils pulseaudio-esound-compat
The following NEW packages will be installed:
  alsa-base alsa-utils esound-common festival festlex-cmu festlex-poslex festvox-kallpc16k festvox-ru
...
Setting up esound-common (0.2.41-10) ...
Setting up libesd0:amd64 (0.2.41-10+b1) ...
Setting up libestools2.1:amd64 (1:2.1~release-5) ...
Setting up alsa-utils (1.0.25-4) ...
Setting up festival (1:2.1~release-5.1) ...
Processing triggers for sgml-base ...
Setting up festvox-ru (0.5-5) ...
Setting up festlex-cmu (1.4.0-6) ...
Setting up festlex-poslex (1.4.0-5) ...
Setting up festvox-kallpc16k (1.4.0-5) ...
08:49:22
#vim /var/tmp/hello-ru.txt
--- /dev/null	2014-11-24 01:42:46.270560796 -0500
+++ /var/tmp/hello-ru.txt	2014-11-27 02:50:11.691804587 -0500
@@ -0,0 +1 @@
+Здравствуйте земляне. Я фестиваль и я приветствую вас в нашем учебном центре
08:50:11
#cat /var/tmp/hello-ru.txt
Здравствуйте земляне. Я фестиваль и я приветствую вас в нашем учебном центре
08:50:13
#vim /var/tmp/hello-en.txt
--- /dev/null	2014-11-24 01:42:46.270560796 -0500
+++ /var/tmp/hello-en.txt	2014-11-27 02:50:57.151805959 -0500
@@ -0,0 +1 @@
+Hello earthlings. I am festival and I greet you in our educational center
08:50:57
#cat /var/tmp/hello-en.txt
Hello earthlings. I am festival and I greet you in our educational center
08:50:59
#cat /var/tmp/hello-ru.txt
Здравствуйте земляне. Я фестиваль и я приветствую вас в нашем учебном центре
08:51:06
#cat /var/tmp/hello-en.txt | text2wave > /tmp/hello-en.wav

08:51:39
## на английском Ðготово

08:51:43
## прослушать:

08:53:28
#all 'ls -l /tmp/*wav'
1: ls: cannot access /tmp/*wav: No such file or directory
2: -rw-r--r-- 1 root root 35297324 Nov 26 13:38 /tmp/music.wav
3: ls: cannot access /tmp/*wav: No such file or directory
4: -rw-r--r-- 1 root root 42677084 Nov 26 13:37 /tmp/nightwish.wav
5: -rw-r--r-- 1 root root 30845996 Nov 26 13:39 /tmp/adele.wav
6: ls: cannot access /tmp/*wav: No such file or directory
7: -rw-r--r-- 1 root root 119094 Nov 27 09:53 /tmp/hello-en.wav
8: -rw-r--r-- 1 root root 1128050 Nov 27 09:52 /tmp/text-en.wav
08:53:44
#all 'ls -l /tmp/*wav'
1: ls: cannot access /tmp/*wav: No such file or directory
2: -rw-r--r-- 1 root root 35297324 Nov 26 13:38 /tmp/music.wav
3: ls: cannot access /tmp/*wav: No such file or directory
4: -rw-r--r-- 1 root root 42677084 Nov 26 13:37 /tmp/nightwish.wav
5: -rw-r--r-- 1 root root 30845996 Nov 26 13:39 /tmp/adele.wav
5: -rw-r--r-- 1 root root  1211894 Nov 27 09:54 /tmp/hello-en.wav
6: -rw-r--r-- 1 root root 465016 Nov 27 09:54 /tmp/hello-en.wav
6: -rw-r--r-- 1 root root     44 Nov 27 09:54 /tmp/hello-ru.wav
7: -rw-r--r-- 1 root root 119094 Nov 27 09:53 /tmp/hello-en.wav
8: -rw-r--r-- 1 root root 1128050 Nov 27 09:52 /tmp/text-en.wav
08:54:59
#cat /var/tmp/hello-ru.txt | text2wave -eval '(voice_msu_ru_nsh_clunits)' > /tmp/hello-ru.wav

08:59:15
#cpall /var/tmp/burunduki.txt /var/tmp/
ssh: connect to host 192.168.12.1 port 22: No route to host
lost connection
ssh: connect to host 192.168.12.2 port 22: No route to host
lost connection
09:00:23
#which cpall
/opt/course-scripts/bin//cpall
09:00:25
#vim `!!`
--- /tmp/l3-saved-3108.16610.31149	2014-11-27 03:00:28.399823219 -0500
+++ /opt/course-scripts/bin//cpall	2014-11-27 03:00:36.671823472 -0500
@@ -1,6 +1,6 @@
 
 for i in `seq 1 8`
 do
-scp "$1" root@192.168.12.$i:"$2"
+scp "$1" root@m$i:"$2"
 done
 
09:00:36
#cpall /var/tmp/burunduki.txt /var/tmp/
burunduki.txt                                                                  100% 8155     8.0KB/s   00:00
burunduki.txt                                                                  100% 8155     8.0KB/s   00:00
burunduki.txt                                                                  100% 8155     8.0KB/s   00:00
burunduki.txt                                                                  100% 8155     8.0KB/s   00:00
burunduki.txt                                                                  100% 8155     8.0KB/s   00:00
burunduki.txt                                                                  100% 8155     8.0KB/s   00:00
burunduki.txt                                                                  100% 8155     8.0KB/s   00:00
burunduki.txt                                                                  100% 8155     8.0KB/s   00:00
09:00:49
#cat /var/tmp/hello-ru.txt | text2wave -eval '(voice_msu_ru_nsh_clunits)' > /tmp/hello-ru.wav
                                 belki.txt                                                       belki.wav
09:02:13
## всё, белочка пришла

09:04:59
#ls /usr/lib/asterisk/modules/ | grep fest
app_festival.so
09:05:14
#ls -l /usr/local/bin/asterisk-festival.pl
-rwxr-xr-x 1 root staff 702 Nov 27 03:04 /usr/local/bin/asterisk-festival.pl
09:06:11
#cpall /usr/local/bin/asterisk-festival.pl /usr/local/bin/
asterisk-festival.pl                                                           100%  702     0.7KB/s   00:00
asterisk-festival.pl                                                           100%  702     0.7KB/s   00:00
asterisk-festival.pl                                                           100%  702     0.7KB/s   00:00
asterisk-festival.pl                                                           100%  702     0.7KB/s   00:00
asterisk-festival.pl                                                           100%  702     0.7KB/s   00:00
asterisk-festival.pl                                                           100%  702     0.7KB/s   00:00
asterisk-festival.pl                                                           100%  702     0.7KB/s   00:00
asterisk-festival.pl                                                           100%  702     0.7KB/s   00:00
09:06:24
## устанавливаем поддержку AGI для языка Perl

09:06:48
#apt-cache search agi perl
barnowl - A curses-based tty Jabber, IRC, AIM  and Zephyr client
check-postgres - script for monitoring PostgreSQL databases
debaux - Debian Auxiliary Programs
debian-policy - Debian Policy Manual and related documents
devscripts - scripts to make the life of a Debian Package maintainer easier
dh-make-perl - helper for creating Debian packages from perl modules
libfile-mmagic-perl - Perl module to guess file type
gargoyle-free - graphical player for Interactive Fiction games
libgdal-perl - Perl bindings to the Geospatial Data Abstraction Library
graphicsmagick-dbg - format-independent image processing - debugging symbols
...
php5-imagick - ImageMagick module for php5
pnp4nagios-bin - Nagios addon to create graphs from performance data (binaries)
libqpid-perl - enterprise messaging system - Perl bindings
sendpage-common - common libraries used to handle alpha-numeric text paging
sendxmpp - commandline XMPP (jabber) utility
unagi - Modular X compositing manager
unagi-dbg - Modular X compositing manager - debugging symbols
unagi-dev - Modular X compositing manager - development files
w2do - simple text-based todo manager
xstow - Extended replacement of GNU Stow
09:07:44
#apt-get install libasterisk-agi-perl
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following NEW packages will be installed:
  libasterisk-agi-perl
0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
Need to get 42.2 kB of archives.
After this operation, 160 kB of additional disk space will be used.
Get:1 http://127.0.0.1/debian/ wheezy/main libasterisk-agi-perl all 1.01-2 [42.2 kB]
Fetched 42.2 kB in 0s (390 kB/s)
Selecting previously unselected package libasterisk-agi-perl.
(Reading database ... 145497 files and directories currently installed.)
Unpacking libasterisk-agi-perl (from .../libasterisk-agi-perl_1.01-2_all.deb) ...
Processing triggers for man-db ...
Setting up libasterisk-agi-perl (1.01-2) ...
09:07:56
## теперь Perl у нас поддерживает AGI

09:08:02
## AGI = Asterisk Gateway Interface

09:08:09
## интерфейс для связки Asterisk с другими программам

09:08:20
#vim /usr/local/bin/asterisk-festival.pl
--- /tmp/l3-saved-3108.28931.10033	2014-11-27 03:11:08.839842573 -0500
+++ /usr/local/bin/asterisk-festival.pl	2014-11-27 03:17:41.731854444 -0500
@@ -1,33 +1,56 @@
 #!/usr/bin/perl
 
-use Asterisk::AGI;
+# Подключаем необходимые модули
+use Asterisk::AGI;	#в частности тот модуль для работы с астериском который только что установили
 use File::Basename;
 use Digest::MD5 qw(md5_hex);
 
+# создаем интерфейс для работы с Asterisk'ом
 $AGI = new Asterisk::AGI;
 
+# считываем что нам сказал Asterisk
 my %input = $AGI->ReadParse();
 
+# Аргумент командной строки:
+# имя файла, который должен проиграться (если файл есть)
+# если файла нет, то должен проиграться сам аргумент
 my $f = $ARGV[0];
 my $text = "@ARGV";
-if (open(F, "$f")) {
+if (open(F, "$f")) {	# если файл есть, записываем в $text содержимое файла
   local $/;
   $text = <F>;
 }
+
+
+# вычисляем контрольную сумму у этого текста
 my $hash = md5_hex($text);
+
+# здесь будут лежать сгенерированные файлы
 my $sounddir = "/var/lib/asterisk/sounds/tts";
+
+# они будут называться просто контрольной суммой
 my $wavefile = "$sounddir/"."tts-$hash.wav";
 
+# если файла нет:
 unless (-f $wavefile) {
+
+ # записываем текст в файл .txt
  open(fileOUT, ">$sounddir"."/say-text-$hash.txt");
  print fileOUT "$text";
  close(fileOUT);
 
+ # вызываем text2wave для этого файла
+ # и записываем результат в wav-файл
  my $execf="text2wave -eval '(voice_msu_ru_nsh_clunits)' $sounddir/say-text-$hash.txt -F 8000 -o $wavefile";
  system($execf);
+
+ # после этого стираем txt файл
  unlink($sounddir."/say-text-$hash.txt");
 }
 $wavefile =~ s/.wav$//;
 
+# теперь дайм команду Asterisk'у что этот файл нужно проиграть
+# как видите команда Playback такая же как в диалплане
+
 $AGI->exec('Playback', $wavefile);
 
09:17:42
## нужно ещё создать /var/lib/asterisk/sounds/tts

09:17:47
## tts = text-to-speech

09:17:54
#mkdir /var/lib/asterisk/sounds/tts

09:17:57
## это просто случайное имя, ни к чему не обязывает

09:18:10
#chown asterisk:asterisk /var/lib/asterisk/sounds/tts

09:18:35
## надо проверить скрипт, работает ли он

09:19:02
## запускаете скрипт потом нажимаете ctrl-d

09:20:04
## осталось прикрутить скрипт к плану набора, dialplan'у

09:20:20
#ls -l /var/tmp/b*txt
-rw-r--r-- 1 user user 7077 Nov 27 02:58 /var/tmp/belki.txt
-rw-r--r-- 1 user user 8155 Nov 27 02:59 /var/tmp/burunduki.txt
09:21:36
#ls -1 /var/tmp/b*txt
/var/tmp/belki.txt
/var/tmp/burunduki.txt
09:21:41
#vim
09:21:51
#~
; 8015 => комната 115
; так 10 разных комнат
; 10 это для примера
exten => _801X,1,MeetMe(10${EXTEN:3})
exten => 8400,1,System(touch /tmp/someone-called-8400)
; и всё сразу же видно
/var/tmp/belki.txt
; тут хорошо видно что это одна строка, хотя мы думали что две
exten => _3391,1,NoOp(Conferences for external users)
exten => _3391,n,MeetMe(10${EXTEN:3})
exten => _3391,n,Hangup
exten => 3392,1,Dial(SIP/3301&SIP/3302)
; звонки на локальные номера
exten => _33XX,1,NoOp(Local Phones)
)
; Monitor выполняет запись звонка
; сначала создаём имя файла:
; её нужно вызывать до Dial
; кому звонили, кто звонил и время
-- INSERT --XX,n,Dial(SIP/${EXTEN},5,tT)                                                       40,1          37%

Файлы

  • /var/tmp/hello-en.txt
  • /var/tmp/hello-ru.txt
  • /var/tmp/hello-en.txt
    >
    Hello earthlings. I am festival and I greet you in our educational center
    
    /var/tmp/hello-ru.txt
    >
    Здравствуйте земляне. Я фестиваль и я приветствую вас в нашем учебном центре
    

    Статистика

    Время первой команды журнала15:26:14 2014-11-26
    Время последней команды журнала09:21:51 2014-11-27
    Количество командных строк в журнале100
    Процент команд с ненулевым кодом завершения, % 4.00
    Процент синтаксически неверно набранных команд, % 0.00
    Суммарное время работы с терминалом *, час 1.66
    Количество командных строк в единицу времени, команда/мин 1.00
    Частота использования команд
    all24|==================| 18.18%
    #18|=============| 13.64%
    _17|============| 12.88%
    grep17|============| 12.88%
    vim11|========| 8.33%
    ff9|======| 6.82%
    cat6|====| 4.55%
    ls4|===| 3.03%
    cpall3|==| 2.27%
    text2wave3|==| 2.27%
    hello-ru.wav2|=| 1.52%
    apt-get2|=| 1.52%
    apt-cache2|=| 1.52%
    ps1|| 0.76%
    mkdir1|| 0.76%
    asterisk1|| 0.76%
    chown1|| 0.76%
    прÐgrep1|| 0.76%
    Setting1|| 0.76%
    должно1|| 0.76%
    [1|| 0.76%
    #vim1|| 0.76%
    hello-en.wav1|| 0.76%
    ~1|| 0.76%
    comebacktoorigin1|| 0.76%
    which1|| 0.76%
    date1|| 0.76%
    ____
    *) Интервалы неактивности длительностью 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$