搜档网
当前位置:搜档网 › ROS_ADSL断线自动电话报警脚本

ROS_ADSL断线自动电话报警脚本

ADSL断线自动电话报警脚本

如果你不总是守在机房的话,线路出了故障用电话通知你是件很有帮助的事情

所需设备:

1,一个外置的MODEM,就是早年用电话线拨号上网的东东,如果你能在仓库找到一台586的机子做ROS的话,也很有希望能找到一个MODEM, 二手电脑商店里也很容易找到,或者花几十元买一个新的也可以,特别注意:要外置的,PIC内置MODEM在LINUX下,不装驱动基本不能识别,这点非常遗憾

2,一条能拨通你的电话的电话线路,内线分机也可以

步骤:

1,把外置把MODEM的数据线接在ROS的串口2上,就两个串口,不是1就是2,不对的话,换一下就可以了,选串口2的目的是与脚本里面使用的相一致,把电话线插在MODEM上,你的电话机也可以插在上面共用一个电话号码,接通MODEM电源

2,用WinBox登陆ROS,在系统-->调度里面新建一调度任务,把脚本代码输入在里面,如图设置好就可以了,

脚本:

#指定被检测的ADSL接口

:set DSL-NAME "CNC-ADSL"

#指定用来拨电话的PPP接口

:set PPP-NAME "PPP-TEL"

#指定拨打的电话号码,若是内线拨外线号码,可使用逗号来暂停,以便等待拨号音

:set TEL-NUM "0,132********"

#拨号的PPP接口不存在的话,就创建它

:if([/int ppp-client find name=$PPP-NAME]="") do={

# 用串口COM2创建拨号接口,不对的话,换一个口就是了

/int ppp-client add name=$PPP-NAME port=serial1 disabled=yes

}

#从PPP接口的注释里,取得待检线路的故障标志,0正常,1检测到一次错误

#由于没有找到更好的方法来保存故障标志,就用接口的注释来变通保存

:set A ([:tonum([/int get $PPP-NAME comment])]+1)

/interface

:if([/int get [/int find name=$DSL-NAME] running]) do={

#如果检测到ADSL正常而原来的标志是故障的话,就复位故障标志

:if($A>1) do={/int set $PPP-NAME comment="0"}

} else={

# 如果连续10次检测到故障的话,复位故障标志为第一次

:if($A>10) do={:set A 1}

# 如果是初次发现故障,就拨打指定的电话

:if($A=1) do={

# 设置电话号码

ppp-client set [/int find name=$PPP-NAME] phone=$TEL-NUM

# 开始拨号

ppp-client enable $PPP-NAME

# 等待响铃60秒钟,遗憾的是,如果你挂断电话,还会再次拨响

# 不能做到挂断电话就停止

:delay 60s

ppp-client disable $PPP-NAME

}

/int set $PPP-NAME comment=[:tostr($A)]

}

延伸:

类似的,可以检测多条ADSL线路或者固定IP线路的故障电话报警

也可以做成一个电话闹钟,结合我的计算星期几的脚本,免除周六周日的干扰休息

期望:

1,要是ROS能支持PCI内置MODEM就好了

2,如果谁能够做到当电话接通的时候,有语音提示就好了,可以根据不同的故障播放不同的语音

相关主题