Thinkai's Blog

Autohotkey|Python|php|aardio|VOIP|IT 爱好者

正在浏览分类 trunk

总共找到 1 篇

自动修改Asterisk的中继的IP Python 3492

作者为 发表

VOIP

由于对接的有个网关定期换IP,手动设定很麻烦。所以写了这么一个脚本扔到cron里。

首先需要修改/etc/asterisk/sip.conf,找到#include sip_custom.conf这里,修改成:

;#include sip_custom.conf
#include sip_additional.conf
#include sip_custom.conf

然后把py脚本整到/bin里:

import re
import os

part_a = '''[9031]
disallow=all
username=9031
type=friend
secret=9031
qualify=yes
insecure=invite
host=dynamic
dtmfmode=rfc2833
context=from-pstn
canreinvite=0
allow=g723

[9031_Out]
disallow=all
username=9031
type=friend
secret=9031
qualify=yes
port=7878
host='''
part_b = '''
fromeuser=9031
context=from-pstn
allow=g723
'''
res = os.popen('asterisk -x "sip show peers"').read()
lines = res.split("\n")

for line in lines:
	if line.find("9031/9031")>-1:
		inbound = re.match("9031/9031\s+(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})\s+D\s+Yes\s+Yes\s+\d+\s+OK \(\d+ ms\)",line)
	elif line.find("9031_Out/9031")>-1:
		outbound = re.match("9031_Out/9031\s+(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})\s+Yes\s+Yes\s+\d+\s+UNREACHABLE",line)
if inbound and outbound and inbound.group(1) <> outbound.group(1):
	print "Change peer IP "+outbound.group(1)+" to "+inbound.group(1)
	f = open("\etc\asterisk\sip_custom.conf","w")
	f.write(part_a+inbound.group(1)+part_b)
	f.close()
	os.popen('asterisk -x reload')
else:
	print "Peer IP has not changed"

再修改/etc/crontab,添加一个定时任务:

*/10 * * * * root python /bin/check_trunk_ip.py

最后重启下crond服务就Ok啦。

service crond restart



友情链接:Autohotkey中文帮助Autohotkey官网Autohotkey中文网联系作者免GooglePlay APK下载

 主题设计 • skyfrit.com  Thinkai's Blog | 保留所有权利

49 queries in 1.101 seconds |