рдбреЗрдмрд┐рдпрди GNU / Linux 5.0 рд╣реЛрд╕реНрдЯ рдкрд░ рдПрдХ OpenVZ Ubuntu 10.04.1 LTS рдХрдВрдЯреЗрдирд░ рдореЗрдВ рддрд╛рд░рд╛рдВрдХрди рдЪрд┐рд╣реНрди рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдирд╛

рдЫрд╡рд┐

рд╕реНрд░реЛрдд рдбреЗрдЯрд╛:





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 рдирдВрдмрд░ рдкрд░ рдЯреЗрд╕реНрдЯ рдХреЙрд▓ рдХрд░рдирд╛



рд╣рдо рдЖрдирдиреНрджрд┐рдд рд╣реЛрддреЗ рд╣реИрдВред



All Articles