рд╕реНрд░реЛрдд рдбреЗрдЯрд╛:
- рдПрд╕реНрдЯреЗрд░рд┐рд╕реНрдХ 1.6.2 - рдЙрдмрдВрдЯреВ рджреЗрд╢реА рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рд╕реЗ
- Ubuntu 10.04.1 LTS - рдиреНрдпреВрдирддрдо рд╕реНрдерд╛рдкрдирд╛ рдореЗрдВ рдХрдВрдЯреЗрдирд░ (x64bit)
- рдУрдкрдирд╡реАрдЬреЗрдб рдХреЗ рд▓рд┐рдП рдореЗрдЬрдмрд╛рди рдкреНрд░рдгрд╛рд▓реА рдбреЗрдмрд┐рдпрди рдЬреАрдПрдирдпреВ / рд▓рд┐рдирдХреНрд╕ 5.0 (рд▓реЗрдиреА) 2.6.26-2-рдУрдкреЗрдирд╡реЗрдЬрд╝-рдПрдордб 64 - рджреЗрд╢реА рднрдВрдбрд╛рд░ рд╕реЗ рдХрд░реНрдиреЗрд▓ рд╣реИред
OpenVZ рд╣реЛрд╕реНрдЯ рд╕реНрдерд╛рдкрд┐рдд рдФрд░ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░реЗрдВред рдПрдХ OpenVZ рд╣реЛрд╕реНрдЯ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреА рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдкрд░ рдпрд╣рд╛рдВ рд╡рд┐рдЪрд╛рд░ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред
рд╣рдо рдорд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рд╣рдордиреЗ рдЗрд╕реЗ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдпрд╛ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рдЕрддрд┐рдерд┐ рдорд╢реАрдиреЛрдВ рдХреЗ рд▓рд┐рдП NAT рдФрд░ рд╕рд░реНрд╡рд░ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рдкреЛрд░реНрдЯ рдЕрдЧреНрд░реЗрд╖рд┐рдд рдХрд░рдирд╛ рд╢рд╛рдорд┐рд▓ рд╣реИред
рдЕрддрд┐рдерд┐ OS рдХреЗ рд▓рд┐рдП рдЯреЗрдореНрдкрд▓реЗрдЯ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░реЗрдВ
cd /var/lib/vz/template/cache
wget download.openvz.org/template/precreated/contrib/ubuntu-10.04-minimal_10.04_amd64.tar.gz
рдХрдВрдЯреЗрдирд░ рдмрдирд╛рдПрдБ рдФрд░ рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд░реЗрдВ
sudo vzctl create 101 --ostemplate ubuntu-10.04-minimal_10.04_amd64
рд╣рдорд╛рд░реЗ рдЯреЗрдореНрдкрд▓реЗрдЯ рд╕реЗ рдЖрдИрдбреА = 101 рдХреЗ рд╕рд╛рде рдПрдХ рдХрдВрдЯреЗрдирд░ рдмрдирд╛рдпрд╛ рдЧрдпрд╛
sudo vzctl set 101 --name voip --save
рдХрдВрдЯреЗрдирд░ рдХрд╛ рдирд╛рдо рд╕реЗрдЯ рдХрд░реЗрдВ
sudo vzctl set 101 --hostname voip.hurnet.ru --save
рдХрдВрдЯреЗрдирд░ рдХреЗ рд▓рд┐рдП рд╣реЛрд╕реНрдЯ рдирд╛рдо рд╕реЗрдЯ рдХрд░реЗрдВ
sudo vzctl set 101 --nameserver 8.8.8.8 --save
рдХрдВрдЯреЗрдирд░ рдХреЗ рд▓рд┐рдП DNS рд╕реЗрдЯ рдХрд░реЗрдВ
sudo vzctl set 101 --description 'Asterisk VoIP server' --save
рдХрдВрдЯреЗрдирд░ рд╡рд┐рд╡рд░рдг
sudo vzctl set 101 --ipadd 192.168.xxx.xxx --save
рдиреЗрдЯрд╡рд░реНрдХ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХрд╛ рдкрддрд╛ рд╕реЗрдЯ рдХрд░реЗрдВ
sudo vzctl set 101 --cpulimit 60 --save
рдкреНрд░реЛрд╕реЗрд╕рд░ рдХреЗ рдЙрдкрдпреЛрдЧ рдХреА рд╕реАрдорд╛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░реЗрдВ
sudo vzctl set 101 --diskspace 9000000:10000000 --save
9GB рдбрд┐рд╕реНрдХ рдХреЛрдЯрд╛ (рдЕрд╕реНрдерд╛рдпреА рд░реВрдк рд╕реЗ 10GB рддрдХ)
sudo vzctl set 101 --quotatime 6000 --save
рд╡рд╣ рд╕рдордп рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП рдЖрдк рдХреЛрдЯрд╛ рдХреЛ рдкрд╛рд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ
sudo vzctl set 101 --privvmpages 750M:768M --save
рдЙрдкрд▓рдмреНрдз рд╕реНрдореГрддрд┐
sudo vzctl set 101 --vmguarpages 250M:256M --save
рд╕реНрдореГрддрд┐ рдХреА рдЧрд╛рд░рдВрдЯреА рд░рд╛рд╢рд┐
sudo vzctl start 101
рд╣рдо рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ
sudo vzctl enter 101
рд╣рдо рдХрдВрдЯреЗрдирд░ рдореЗрдВ рдЬрд╛рддреЗ рд╣реИрдВ
apt-get update
apt-get upgrade
рдирдП рд╕рд┐рд░реЗ рд╕реЗ рдХрд░ рд░рд╣реЗ рд╣реИрдВ
sudo vzctl restart 101
(рдореЗрдЬрдмрд╛рди рдорд╢реАрди рдкрд░ рдЪрд▓рд╛рдПрдВ, рдФрд░ рдХрдВрдЯреЗрдирд░ рдореЗрдВ рд╡рд╛рдкрд╕ рдЬрд╛рдПрдВ)
sudo apt-get install asterisk
рд╣рдордиреЗ рддрд╛рд░рд╛рдВрдХрди рдХрд┐рдпрд╛
рд╡рд╣ рдЕрдкрдиреЗ рд╕рд╛рде рдЖрд╡рд╢реНрдпрдХ рдирд┐рд░реНрднрд░рддрд╛рдУрдВ рдХреЛ рднреА рдЦреАрдВрдЪ рд▓реЗрдЧрд╛ред рд╕реНрдерд╛рдкрдирд╛ рдХреЗ рджреМрд░рд╛рди, рд╡реЗ рдПрдХ рдЯреЗрд▓реАрдлреЛрди рдорд╛рдВрдЧреЗрдВрдЧреЗ
рдХреНрд╖реЗрддреНрд░ рдХреЛрдб (рд░реВрд╕ рдХреЗ рд▓рд┐рдП рдпрд╣ 7 рд╣реИ), рдФрд░ рдЧреНрд░рдм рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреБрдЫ рд╕рд╡рд╛рд▓ (рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рдирд╣реАрдВ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдХрд░реНрдиреЗрд▓ рдФрд░ рдХрдВрдЯреЗрдирд░ рд╕реЗ рд▓реЛрдбрд░ рдХреЛ рдирд╣реАрдВ рдмрджрд▓рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ) рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреА рдПрдХ рдЧреБрдЪреНрдЫрд╛ рдХреЗ рд╕рд╛рде рдпрд╣ рд╕рдм рдбрд╛рд▓рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ - рдзреНрдпрд╛рди рди рджреЗрдВ, рд╕реНрдерд╛рдкрдирд╛ рдкреВрд░реА рд╣реЛрдиреЗ рддрдХ рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░реЗрдВред
рдпрд╣рд╛рдБ рд╕реЗ рд░реВрд╕реА рдзреНрд╡рдирд┐ рд╡рд╛рдХреНрдпрд╛рдВрд╢реЛрдВ рдХреЛ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░реЗрдВ http://ivrvoice.ru/downloader
рд╣рдо рдирд╡реАрдирддрдо рд╕рдВрдЧреНрд░рд╣ рд▓реЗрддреЗ рд╣реИрдВред рдореЗрд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдпрд╣ рддрд╛рд░рд╛рдВрдХрди рд╣реИ- рд▓рдЧрддрд╛ рд╣реИ- ru- рдЬреАрдПрд╕рдПрдо- 2010-04--28ред Tarред Gz
cd /usr/share/asterisk/sounds/
wget ivrvoice.ru/downloader/download/file/11
tar xvfz 11
rm 11
рддрд╛рд░рд╛рдВрдХрди рдХреЗ рд╕рд╛рде рдкреНрд░рд╛рд░рдВрдн рдХрд░рдирд╛
/Etc/asterisk/sip.conf рдкрд░ рдЬрд╛рдПрдВ, рд╡рд┐рдХрд▓реНрдк рдХреЛ рдвреВрдВрдвреЗрдВ, рдареАрдХ рдХрд░реЗрдВ рдФрд░ рдареАрдХ рдХрд░реЗрдВ
language=ru
[рд╕рд╛рдорд╛рдиреНрдп] рдЕрдиреБрднрд╛рдЧ рдореЗрдВ,
allowguest=no
рд╡рд┐рдХрд▓реНрдк
allowguest=no
рд╣реИ
рдлрд╝рд╛рдЗрд▓ рдХреЗ рдЕрдВрдд рдореЗрдВ, рдПрдХ рдирдпрд╛ рдЕрдиреБрднрд╛рдЧ рдмрдирд╛рдПрдВ
[200] ; Test user
type=friend
host=dynamic
username=200
secret=123
nat=no
canreinvite=no
context=office
callerid=тАЭtestuserтА│ <200>
allow=gsm
allow=ulaw
allow=alaw
рдЗрд╕рдХреЗ рд╕рд╛рде рд╣рдордиреЗ рдПрдХ рдкрд░реАрдХреНрд╖рдг рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдмрдирд╛рдпрд╛ред рдкреНрд░рд▓реЗрдЦрди рдореЗрдВ рд╡рд┐рд╕реНрддреГрдд рд╡рд╛рдХреНрдпрд╡рд┐рдиреНрдпрд╛рд╕ рдФрд░ рд╡рд┐рд╡рд░рдг рдорд┐рд▓рдирд╛ рдЪрд╛рд╣рд┐рдПред
рдЕрдЧрд▓рд╛, /etc/asterisk/extensions.conf рдлрд╝рд╛рдЗрд▓ рдХреЗ рдЕрдВрдд рдореЗрдВ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдмрдирд╛рдПрдВ
[office]
exten => 200,1, Macro(stdexten,200,SIP/200)
exten => testuser, 1, Goto(200|1)
include => demo
[macro-stdexten]
exten => s, 1, Dial (${ARG2},20,t [4] )
exten => s, 2, Goto(s-$(DIALSTATUS),1)
exten => s-NOANSWER, 1, Voicemail(u${ARG1})
exten => s-NOANSWER, 2, (Goto(default,s,1))
exten => s-BUSY, 1, Voicemail(b,${ARG1})
exten => s-BUSY, 2, (Goto(default,s,1))
exten => _s-., 1, Goto(s-NOANSWER)
exten => a, 1, VoiceMailMain(${ARG1})
рдЖрдЗрдП рдорд╛рдирд╡ рдПрдХреАрдХрд░рдг рдХреЛ рддрд╛рд░рд╛рдВрдХрди рдкреНрд░рдгрд╛рд▓реА рдореЗрдВ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░реЗрдВ
рдПрдХ рд╕рдореВрд╣ рдФрд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдмрдирд╛рдПрдБ рдЬрд┐рд╕рдореЗрдВ рд╕реЗ рддрд╛рд░рд╛рдВрдХрди рдкреНрд░рдгрд╛рд▓реА рдореЗрдВ рдХрд╛рдо рдХрд░реЗрдЧрд╛:
addgroup --gid 109 asterisk
adduser --home /var/lib/asterisk --shel /bin/false --uid 104 --gid 109 --disabled-login asterisk
adduser asterisk dialout
adduser asterisk audio
рдпрд╣ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрдирд╛ рдЪрд╛рд╣рд┐рдП:
# cat /etc/group |grep asterisk
dialout:x:20:asterisk
audio:x:29:asterisk
asterisk:x:109:
# cat /etc/passwd |grep asterisk
asterisk:x:104:109:Asterisk PBX daemon,,,:/var/lib/asterisk:/bin/false
рд╣рдо рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рдЕрдзрд┐рдХрд╛рд░ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддреЗ рд╣реИрдВ
chown -R asterisk. /etc/asterisk
chown -R asterisk. /var/{lib,log,spool}/asterisk
chown -R asterisk. /usr/share/asterisk/
mkdir /var/run/asterisk
chown -R asterisk. /var/run/asterisk/
рдПрдХ рд╕реНрдЯрд╛рд░реНрдЯ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдмрдирд╛рдПрдВ:
nano /etc/init.d/asterisk
рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╕рд╛рдордЧреНрд░реА рдХреЗ рд╕рд╛рде:
#! / рдмрд┐рди / рд╢
#
# рддрд╛рд░рд╛рдВрдХрди рддрд╛рд░рд╛рдВрдХрди рдЪрд┐рд╣реНрди PBX рдкреНрд░рд╛рд░рдВрдн рдХрд░реЗрдВ
# ┬й рдорд╛рд░реНрдХ рдкрд░реНрд╕рд╕реЗрд▓ <msp@debian.org>
# ┬й рддрдЬрд╝рдлрд┐рд░ рдХреЛрд╣реЗрди <tzafrir.cohen@xorcom.com>
# ┬й рдлрд┐рджреЛрди рд▓рд┐рдЖрдВрдмреЛрдЯрд┐рд╕ <paravoid@debian.org>
# рдпрд╣ рдкреИрдХреЗрдЬ рдореБрдлреНрдд рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рд╣реИ; рдЖрдк рдЗрд╕реЗ рдкреБрдирд░реНрд╡рд┐рддрд░рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ / рдпрд╛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ
# рдЗрд╕реЗ GNU рдЬрдирд░рд▓ рдкрдмреНрд▓рд┐рдХ рд▓рд╛рдЗрд╕реЗрдВрд╕ рдХреА рд╢рд░реНрддреЛрдВ рдХреЗ рддрд╣рдд рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ
# рдлреНрд░реА рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рдлрд╛рдЙрдВрдбреЗрд╢рди; рд▓рд╛рдЗрд╕реЗрдВрд╕ рдХрд╛ рдпрд╛ рддреЛ рд╕рдВрд╕реНрдХрд░рдг 2, рдпрд╛
# (рдЕрдкрдиреЗ рд╡рд┐рдХрд▓реНрдк рдкрд░) рдХрд┐рд╕реА рднреА рдмрд╛рдж рдХреЗ рд╕рдВрд╕реНрдХрд░рдгред
#
# рдХреЗ рдЖрдзрд╛рд░ рдкрд░:
#
# рдХрдВрдХрд╛рд▓ рдЙрджрд╛рд╣рд░рдг рдлрд╝рд╛рдЗрд▓ /etc/init.d/ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдПред
# рдЗрд╕ рдлрд╝рд╛рдЗрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ /etc/init.d рдХреЗ рд▓рд┐рдП рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред
#
# рдорд┐рдХреЗрд▓ рд╡реИрди рд╕реНрдореБрд░реЗрдирдмрд░реНрдЧ <miquels@cistron.nl> рджреНрд╡рд╛рд░рд╛ рд▓рд┐рдЦрд┐рддред
# рдбреЗрдмрд┐рдпрди рдЬреАрдПрдирдпреВ / рд▓рд┐рдирдХреНрд╕ рдХреЗ рд▓рд┐рдП рд╕рдВрд╢реЛрдзрд┐рдд
# рдЗрдпрд╛рди рдорд░реНрдбреЙрдХ <imurdock@gnu.ai.mit.edu> рджреНрд╡рд╛рд░рд╛ред
#
# рд╕рдВрд╕реНрдХрд░рдг: @ (#) рдХрдВрдХрд╛рд▓ 1.9 26-рдлрд░рд╡рд░реА -2001 miquels@cistron.nl
#
### BEGIN INIT рдЬрд╛рдирдХрд╛рд░реА
# рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ: рддрд╛рд░рд╛рдВрдХрди рдЪрд┐рд╣реНрди
# рдЖрд╡рд╢реНрдпрдХ-рдкреНрд░рд╛рд░рдВрдн: $ local_fs zaptel
# рдЖрд╡рд╢реНрдпрдХ-рд╕реНрдЯреЙрдк: $ local_fs
# рд╢реБрд░реВ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП:
# рд░реБрдХрдирд╛ рдЪрд╛рд╣рд┐рдП:
# рдбрд┐рдлрд╝реЙрд▓реНрдЯ-рдкреНрд░рд╛рд░рдВрдн: 2 3 4 5
# рдбрд┐рдлрд╝реЙрд▓реНрдЯ-рд╕реНрдЯреЙрдк: 0 1 6
# рд▓рдШреБ-рд╡рд┐рд╡рд░рдг: рддрд╛рд░рд╛рдВрдХрди рдЪрд┐рд╣реНрди PBX
# рд╡рд┐рд╡рд░рдг: рддрд╛рд░рд╛рдВрдХрди рдЪрд┐рд╣реНрди рдкреАрдмреАрдПрдХреНрд╕ рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рддрд╛ рд╣реИ
### END INIT рдЬрд╛рдирдХрд╛рд░реА
рдкрде = / usr / рд╕реНрдерд╛рдиреАрдп / sbin: / usr / рд╕реНрдерд╛рдиреАрдп / рдмрд┐рди: / sbin: / bin: / usr / sbin: / usr / рдмрд┐рди
NAME = рддрд╛рд░рд╛рдВрдХрди рдЪрд┐рд╣реНрди
USER = $ NAME
рдЧреНрд░реБрдк = $ USER
DAEMON = / usr / sbin / $ NAME
DESC = "Asterisk PBX"
PIDFILE = "/var/run/asterisk/asterisk.pid"
ASTSAFE_PIDFILE = "/var/run/asterisk/asterisk_safe.pid"
PIDFILE_DIR = ` dirname $ PIDFILE`
UMASK = 007 # рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ
# MAXFILES = 1024 # (рд╕рд┐рд╕реНрдЯрдо рдбрд┐рдлрд╝реЙрд▓реНрдЯ)
# рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ: рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╕рдордп рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ
PARAMS = ""
CHDIR_PARM = ""
AST_REALTIME = "рд╣рд╛рдБ"
RUNASTERISK = "рд╣рд╛рдБ"
AST_DUMPCORE = "рдирд╣реАрдВ"
AST_DUMPCORE_DIR = "/ var / рд╕реНрдкреВрд▓ / рддрд╛рд░рд╛рдВрдХрди" # рдХреЗрд╡рд▓ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЕрдЧрд░ AST_MPCORE! = рдирд╣реАрдВ
# core_patternред рджреЗрдЦреЗрдВ: http://lxr.linux.no/source/Documentation/sysctl/kernel.txt
# CORE_PATTERN =
рдЕрдЧрд░ [ -r / etc / default / $ NAME ] ; рддрдм ред / etc / рдбрд┐рдлрд╝реЙрд▓реНрдЯ / $ NAME ; рдлрд╛рдИ
рдЕрдЧрд░ [ " $ RUNASTERISK " ! = "рд╣рд╛рдБ" ] ; рддреЛ
рдЗрдХреЛ "рддрд╛рд░рд╛рдВрдХрди рдЕрднреА рддрдХ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВ / рдЖрджрд┐ / рдбрд┐рдлрд╝реЙрд▓реНрдЯ / рддрд╛рд░рд╛рдВрдХрди рдкрд╣рд▓реЗред"
рдмрд╛рд╣рд░ рдирд┐рдХрд▓реЗрдВ 0
рдлрд╛рдИ
рдЕрдЧрд░ [ " $ AST_REALTIME " ! = "рдирд╣реАрдВ" ]
рддреЛ
PARAMS = " $ PARAMS -p"
рдлрд╛рдИ
рдЕрдЧрд░ [ " $ AST_DUMPCORE " ! = "рдирд╣реАрдВ" ]
рддреЛ
PARAMS = " $ PARAMS -g"
рдЕрдЧрд░ [ " $ CORE_PATTERN " ! = '' ]
рддреЛ
рдЗрдХреЛ " $ CORE_PATTERN " > / proc / sys / рдХрд░реНрдиреЗрд▓ / core_pattern
рдлрд╛рдИ
рдЕрдЧрд░ [ -d " $ AST_DUMPCORE_DIR " ]
рддреЛ
CHDIR_PARM = "--chdir $ AST_DUMPCORE_DIR "
рдлрд╛рдИ
рдлрд╛рдИ
рдЕрдЧрд░ [ "x $ USER " = "x" ]
рддреЛ
рдЧреВрдВрдЬ "рддреНрд░реБрдЯрд┐: рдЦрд╛рд▓реА USER рдирд╛рдо"
рдмрд╛рд╣рд░ рдирд┐рдХрд▓реЗрдВ 1
рдлрд╛рдИ
рдЕрдЧрд░ [ ` рдЖрдИрдбреА -рдпреВ " $ USER " ` = 0 ]
рддреЛ
рдЧреВрдВрдЬ "рдореВрд▓ рдХреЗ рд░реВрдк рдореЗрдВ рд╢реБрд░реВ рд╕рдорд░реНрдерд┐рдд рдирд╣реАрдВ рд╣реИред"
рдмрд╛рд╣рд░ рдирд┐рдХрд▓реЗрдВ 1
рдлрд╛рдИ
PARAMS = " $ PARAMS -U $ USER "
рдЕрдЧрд░ [ "x $ AST_DEBUG_PARAMS " = x ]
рддреЛ
AST_DEBUG_PARAMS = -vvvvvddddd
рдлрд╛рдИ
рдЕрдЧрд░ [ " $ RUNASTSAFE " = "рд╣рд╛рдБ" ] ; рддреЛ
# WRAPPER_DAEMON рдХрд╛ рдорд╛рди / etc / default / asterisk рдореЗрдВ рд╕реЗрдЯ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ
WRAPPER_DAEMON = $ {WRAPPER_DAEMON: - / usr / sbin / рд╕реБрд░рдХреНрд╖рд┐рдд рдФрд░ рддреЗрдЬрд╝}
REALDAEMON = " $ WRAPPER_DAEMON "
рдЕрдиреНрдпрдерд╛
REALDAEMON = " $ рдбреЗрдорди "
рдлрд╛рдИ
test -x $ DAEMON || рдмрд╛рд╣рд░ рдирд┐рдХрд▓реЗрдВ 0
рдЕрдЧрд░ [ ! -d " $ PIDFILE_DIR " ] ; рддреЛ
mkdir " $ PIDFILE_DIR "
$ USER рдХреЛ рд▓реЗрдВ : $ GROUP " $ PIDFILE_DIR "
рдлрд╛рдИ
рд╕реЗрдЯ
рдЕрдЧрд░ [ " $ UMASK " ! = '' ]
рддреЛ
рдЙрдорд╕реНрдХ $ UMASK
рдлрд╛рдИ
# рдкреНрд░рддрд┐-рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдЦреБрд▓реА рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреА рд╕реАрдорд╛ рдмрджрд▓рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдВ:
рдЕрдЧрд░ [ " $ MAXFILES " ! = '' ]
рддреЛ
ulimit -n $ MAXFILES
рдлрд╛рдИ
рд╕реНрдерд┐рддрд┐ ( ) {
plist = ` ps ax | awk "{if (\ \ $ 5 == \" $ DAEMON \ " ) рдкреНрд░рд┐рдВрдЯ \ \ $ 1}" "
рдЕрдЧрд░ [ " $ plist " = "" ] ; рддреЛ
рдЧреВрдВрдЬ " $ DESC рдмрдВрдж рдХрд░ рджрд┐рдпрд╛ рд╣реИ"
рд╡рд╛рдкрд╕реА 1
рдЕрдиреНрдпрдерд╛
рдЧреВрдВрдЬ " $ DESC рдЪрд▓ рд░рд╣рд╛ рд╣реИ: $ plist "
рд╡рд╛рдкрд╕реА реж
рдлрд╛рдИ
}
asterisk_rx ( ) {
рдЕрдЧрд░ ! рд╕реНрдерд┐рддрд┐ > / рджреЗрд╡ / рдЕрд╢рдХреНрдд; рдлрд┐рд░ рд╡рд╛рдкрд╕реА 0 ; рдлрд╛рдИ
# рдЕрдЧрд░ $ HOME рд╕реЗрдЯ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рддрд╛рд░рд╛рдВрдХрди рдЪрд┐рд╣реНрди -x рд╡рд╣рд╛рдВ рдПрдХ .asterisk_history рд▓рд┐рдЦрддрд╛ рд╣реИ
(
рдкрд░реЗрд╢рд╛рди рдШрд░
$ DAEMON -rx "$ 1"
)
}
рдорд╛рдорд▓реЗ рдореЗрдВ "$ 1"
рдбрд┐рдмрдЧ )
# рд╣рдо рдмрд╣реБрдд рд╕реЗ рд╡рд┐рд╢реЗрд╖ рдкреИрд░рд╛рдореАрдЯрд░ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ рдЬрд┐рдиреНрд╣реЗрдВ рдореИрдВ рдЫреЛрдбрд╝рдирд╛ рдирд╣реАрдВ рдЪрд╛рд╣рддрд╛
# рдЧрд▓рддреА рд╕реЗред рдореБрдЭреЗ рдбрд░ рд╣реИ рдХрд┐ рд╕реНрдХрд┐рдк-рдпреВ рдПрдХ рдмрд╛рд░ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ
# рднреНрд░рд╛рдордХ рдкрд░рд┐рдгрд╛рдоред рдореИрдВ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреА рдкрд╕рдВрдж рдХреЛ рднреА рдмрдирд╛рдП рд░рдЦрдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ
# -рдк
рдЧреВрдВрдЬ "рдбрд┐рдмрдЧрд┐рдВрдЧ $ DESC :"
$ рдбреЗрдореЛрди $ PARAMS $ AST_DEBUG_PARAMS
рдмрд╛рд╣рд░ рдирд┐рдХрд▓реЗрдВ 0
;;
рд╢реБрд░реВ )
рдЕрдЧрд░ рд╕реНрдерд┐рддрд┐ > / рджреЗрд╡ / рдЕрд╢рдХреНрдд; рддреЛ
рдЗрдХреЛ " $ DESC рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЪрд▓ рд░рд╣рд╛ рд╣реИред рдкреБрдирд░рд╛рд░рдВрдн рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред"
рдмрд╛рд╣рд░ рдирд┐рдХрд▓реЗрдВ 0
рдлрд╛рдИ
рдЗрдХреЛ -рдПрди " $ рдбреЗрд╕ рд╢реБрд░реВ рдХрд░рдирд╛:"
рдЕрдЧрд░ [ " $ RUNASTSAFE " ! = "рд╣рд╛рдБ" ] ; рддреЛ
# TODO: рдХреНрдпрд╛ рд╣реЛрдЧрд╛ рдЕрдЧрд░ рд╣рдордиреЗ рд░реИрдкрд░ рдХреЛ рдЙрд╕рдХреЗ рддрд╛рд░рд╛рдВрдХрди рдЪрд┐рд╣реНрди рдХреЗ рд░реВрдк рдореЗрдВ рд▓рдбрд╝рд╛
# рдорд╛рд░рд╛ рдЧрдпрд╛? рдЕрдЧрд░ рд╣рдо рдЕрдВрджрд░ рд╣реИрдВ рддреЛ рд░реИрдкрд░ рдХреЗ рд▓рд┐рдП рд╕реНрдерд┐рддрд┐ рдХреА рдЬрд╛рдВрдЪ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдП
# "рд╕реБрд░рдХреНрд╖рд┐рдд рдореЛрдб"
рдЕрдЧрд░ рд╕реНрдерд┐рддрд┐ > / рджреЗрд╡ / рдЕрд╢рдХреНрдд; рддреЛ
рдЗрдХреЛ " $ DESC рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЪрд▓ рд░рд╣рд╛ рд╣реИред рдкреБрдирд░рд╛рд░рдВрдн рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред"
рдмрд╛рд╣рд░ рдирд┐рдХрд▓реЗрдВ 0
рдлрд╛рдИ
start-stop-daemon --start --group $ GROUP --pidfile " $ PIDFILE " \
$ CHDIR_PARM \
--exec $ REALDAEMON - $ PARAMS
рдЕрдиреНрдпрдерд╛
start-stop-daemon --start --group $ GROUP \
--рдмреИрдХрдЧреНрд░рд╛рдЙрдВрдб - рдореЗрдХ-рдкрд┐рдбрдлрд╛рдЗрд▓ \
$ CHDIR_PARM - рд╕рд╣рд╛рдпрдХ " $ ASTSAFE_PIDFILE " \
--exec $ REALDAEMON - $ PARAMS
рдлрд╛рдИ
рдЧреВрдВрдЬ " $ NAME ред"
;;
рдмрдВрдж рдХрд░реЛ )
рдЗрдХреЛ -рдПрди "рд╕реНрдЯреЙрдкрд┐рдВрдЧ $ DESC : $ NAME "
# рд╢рд╛рди рд╕реЗ рдХреЛрд╢рд┐рд╢ рдХрд░реЛред
# рдпрд╣ рдХреБрдЫ рдорд╛рдорд▓реЛрдВ рдореЗрдВ рд▓рдЯрдХрд╛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ, рдЬрдм рддрд╛рд░рд╛рдВрдХрди
# рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЛ рд░реЛрдХрд╛ рдЬрд╛рддрд╛ рд╣реИред рд╕рдлрд╛рдИ рдХреА рдЪрд┐рдВрддрд╛ рдХрд░рдиреЗ рдХреА рдЬрд╣рдордд рдирд╣реАрдВ:
# рдпрд╣ рдпрд╛ рддреЛ рд╡рд┐рдлрд▓ рд╣реЛ рдЬрд╛рдПрдЧрд╛ рдпрд╛ рдЬрдм рддрд╛рд░рд╛рдВрдХрди рдорд░ рдЬрд╛рдПрдЧрд╛ред
( asterisk_rx 'рдЕрдм рдмрдВрдж рдХрд░реЛ' > / dev / null 2 > & 1 & ) рдФрд░
рдЕрдЧрд░ [ " $ RUNASTSAFE " = "рд╣рд╛рдБ" ] ; рддреЛ
рд╕реНрдЯрд╛рд░реНрдЯ-рд╕реНрдЯреЙрдк-рдбреЗрдореЙрди - рд╕реНрдЯреЙрдк --quiet --oknodo \
-рдкрд┐рдбрдлрд╛рдЗрд▓ $ ASTSAFE_PIDFILE
rm -f $ ASTSAFE_PIDFILE
рдлрд╛рдИ
# рдмрд╕ рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдирд╛ рдХрд┐ рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╣реИ, рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдорд░ рдЪреБрдХрд╛ рд╣реИред
# рдкреГрд╖реНрдарднреВрдорд┐ рдореЗрдВ рддрд╛рд░рд╛рдВрдХрди рдЪрд┐рд╣реНрди рд╣реЛрдиреЗ рдкрд░ KILL рдЖрд╡рд╢реНрдпрдХ рд╣реИ
start-stop-daemon --stop --quiet --oknodo --retry = 0/2 / TERM / 2 / KILL / 5 --exec $ DAEMON
рдЧреВрдВрдЬ "ред"
;;
рдкреБрдирдГ рд▓реЛрдб рдХрд░реЗрдВ )
рдЧреВрдВрдЬ " $ DESC рд╡рд┐рдиреНрдпрд╛рд╕ рдлрд╛рдЗрд▓ рдХреЛ рдкреБрдирдГ рд▓реЛрдб рдХрд░рдирд╛ред"
asterisk_rx 'рдореЙрдбреНрдпреВрд▓ рдкреБрдирдГ рд▓реЛрдб рдХрд░реЗрдВ'
;;
рд▓рдХрдбрд╝рд╣рд╛рд░рд╛-рдкреБрдирдГ рд▓реЛрдб )
asterisk_rx 'рд▓рдХрдбрд╝рд╣рд╛рд░рд╛ рдкреБрдирдГ рд▓реЛрдб'
;;
рдПрдХреНрд╕рдЯреЗрдВрд╢рди-рд░реАрд▓реЛрдб | рдбрд╛рдпрд▓рдкреНрд▓рд╛рди-рд░реАрд▓реЛрдб )
рдЧреВрдВрдЬ " $ DESC рд╡рд┐рдиреНрдпрд╛рд╕ рдлрд╛рдЗрд▓ рдХреЛ рдкреБрдирдГ рд▓реЛрдб рдХрд░рдирд╛ред"
asterisk_rx 'рдбрд╛рдпрд▓рдкреНрд▓рд╛рди рд░реАрд▓реЛрдб'
;;
рдлрд┐рд░ рд╕реЗ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ )
asterisk_rx 'рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реЛрдиреЗ рдкрд░ рдкреБрдирдГ рдЖрд░рдВрдн рдХрд░реЗрдВ'
;;
рдкреБрдирд░рд╛рд░рдВрдн | рдмрд▓-рдкреБрдирдГ рд▓реЛрдб )
$ 0 рдмрдВрдж рдХрд░реЛ
$ 0 рд╢реБрд░реВ
;;
рд╕реНрдерд┐рддрд┐ )
рд╕реНрдерд┐рддрд┐
рдмрд╛рд╣рд░ рдирд┐рдХрд▓реЗрдВ $?
;;
zaptel-fix )
рдЧреВрдВрдЬ "рд▓реЛрдбрд┐рдВрдЧ рдФрд░ рд░реАрд▓реЛрдбрд┐рдВрдЧ рд▓реЛрдбрд┐рдВрдЧ рдПрд╕реНрдЯрд░рд┐рд╕реНрдХ рдФрд░ рдЬрд╝реИрдкрдЯреЗрд▓:"
$ 0 рдмрдВрдж рдХрд░реЛ
/ etc / init.d / zaptel рдЕрдирд▓реЛрдб
# рд▓реЛрдб рдореЙрдбреНрдпреВрд▓ рд╕реЗ / etc / рдореЙрдбреНрдпреВрд▓ред рдпрджрд┐ рдЖрдк рдкрд░ рднрд░реЛрд╕рд╛ рдХрд░рддреЗ рд╣реИрдВ рддреЛ рдпрд╣ рдЯреВрдЯ рдЬрд╛рдПрдЧрд╛
# рдЦреЛрдЬ / рд╣реЙрдЯрдкреНрд▓рдЧ
/ etc / init.d / рдореЙрдбреНрдпреВрд▓-рдЗрдирд┐рдЯ-рдЯреВрд▓реНрд╕
/ etc / init.d / zaptel рдкреНрд░рд╛рд░рдВрдн
$ 0 рд╢реБрд░реВ
;;
* )
N = / etc / init.d / $ NAME
рдЗрдХреЛ "рдЙрдкрдпреЛрдЧ: $ рдПрди {рд╕реНрдЯрд╛рд░реНрдЯ | рд╕реНрдЯреЙрдк | рд░рд┐рд╕реНрдЯрд╛рд░реНрдЯ | рд░реАрд▓реЛрдб | рд╕реНрдЯреЗрдЯрд╕ | рдбрд┐рдмрдЧрд░ | рд▓реЙрдЧрд░-рд░рд┐рдУрдХреНрд╕ред рд░реАрд▓-рд░реАрд▓реЛрдбред рд░рд┐рд╕реНрдЯрд╛рд░реНрдЯ-рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ | рдлреЛрд░реНрд╕-рд░реАрд▓реЛрдб}" > & 2
рдмрд╛рд╣рд░ рдирд┐рдХрд▓реЗрдВ 1
;;
esac
рдмрд╛рд╣рд░ рдирд┐рдХрд▓реЗрдВ 0
рд╣рдо рдЙрд╕реЗ рд╕рд╣реА рдЕрдзрд┐рдХрд╛рд░ рджреЗрддреЗ рд╣реИрдВ
chmod 755 /etc/init.d/asterisk
рд╣рдо рд╕реНрдЯрд╛рд░реНрдЯрдЕрдк рдкрд░ рдПрдХ рд╢реБрд░реВрдЖрдд рдХрд░рддреЗ рд╣реИрдВ:
update-rc.d asterisk defaults 90 10
рд╣рдо рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрдВрдЯреЗрдирд░ рдХреЛ рд░рд┐рдмреВрдЯ рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рд╕рдм рдХреБрдЫ рдЦреБрдж рд╕реЗ рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИ:
sudo vzctl restart 101
рд╣рдо рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рд╕рдм рдХреБрдЫ рд╡реАрдУрдЖрдИрдкреА рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЗ рд╕рд╛рде рдЬреБрдбрд╝рдХрд░ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ:
192.168.xxx.xxx
: 200
: 123
рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, 500 рдирдВрдмрд░ рдкрд░ рдЯреЗрд╕реНрдЯ рдХреЙрд▓ рдХрд░рдирд╛
рд╣рдо рдЖрдирдиреНрджрд┐рдд рд╣реЛрддреЗ рд╣реИрдВред