码迷,mamicode.com
首页 > 其他好文 > 详细

panabit自动分析域名并添加解析后的IP

时间:2015-07-30 23:42:29      阅读:202      评论:0      收藏:0      [点我收藏+]

标签:panabit dns 自动添加ip

公司有安装panabit行为管理器. 然后做了一些规则限制. 放开了几个域名.比如QQ的企业邮箱.

然后像QQ企业邮箱之类的有时经常换IP.这样如果不知道的话,同事可能就没办法收邮件了...


看了下panabit是基于freebsd的. 公司目前有两套,一个8.0的,一个9.0的. 


话说bsd里面的 sed 真的是超难用. 还好有 awk. 而且是csh, 没有bash. 考虑到panabit这个是定制的环境.可能是不是你想安装就能安装的.就算安装了,说不定不稳定...


panabit里面没有nslookup和dig. 所有域名只能ssh到别的server去查询.


下面是具体代码:

#!/bin/csh
# create by bianlimit

set sshhost = "192.168.1.14"

if ( `uname -r` == "9.2-RELEASE" ) then
    #分部用的是新的版本, 这里面的 tid 和 dns 那个是去pa_conf这个文件查看的.
    set ipectrl = "/usr/system/bin/ipectrl"
    set pa_conf = "/conf/panabit.conf"
    set pa_tid = "1"
    set pa_dns = "1"
else
    #老版本
    set ipectrl = "/usr/panabit/bin/ipectrl"
    set pa_conf = "/usr/panaetc/panabit.conf"
    set pa_tid = "4"
    set pa_dns = "2"
endif

set pa_dir = `dirname $pa_conf`
set ip_tmp="192.168.1.11 192.168.1.12"
set dns_tmp=`awk -F ‘=‘ -v var=$pa_dns ‘/^dns/&&$2==var" dns"{print $3}‘ $pa_conf`

foreach i ( $dns_tmp )
    set www = `ssh $sshhost "nslookup $i | awk ‘NR>4&&/^Add/‘" | awk ‘{print $2" "}‘`
    if ( $i == "exmail.qq.com" ) then
        #公司用的QQ企业邮箱还得添加imap, smtp
        set imap = `ssh $sshhost "nslookup imap.$i | awk ‘NR>4&&/^Add/‘" | awk ‘{print $2" "}‘`
        set smtp = `ssh $sshhost "nslookup smtp.$i | awk ‘NR>4&&/^Add/‘" | awk ‘{print $2" "}‘`
        set ip_tmp = "$ip_tmp $imap $smtp"
    endif
    set ip_tmp = "$ip_tmp $www"
end

set newip = `echo "$ip_tmp" | awk ‘{for(i=1;i<=NF;i++){a[$i]}}END{if(length(a)==0){print "EXIT"}else{for(i in a){print i}}}‘`

if ( "$newip" == "EXIT" ) then
    exit
endif

#生成新的格式.检查是否和原来的一样. 一样就输出为空
awk -F ‘=‘ -v vtid=$pa_tid -v nip="$newip" ‘BEGIN{split(nip,t," ")}$1~/iprng tid/&&$2==vtid" ip"{w[$NF];x=1;next}{if(x){c=c?c"\n"$0:$0}else{a=a?a"\n"$0:$0}}END{if(length(t)==length(w)){for(i in t){if(i in w){delete w[i]}}if(length(w)==0){print ""}}else{for(i in t){b=b?b"\niprng tid="vtid" ip="t[i]:"iprng tid="vtid" ip="t[i]};print a"\n"b"\n"c}}‘ $pa_conf > "${pa_conf}.tmp"

#文件为空则退出
if ( -z "${pa_conf}.tmp" ) then
    exit
endif

cp $pa_conf "${pa_conf}.`date +%F`" && mv "${pa_conf}.tmp" $pa_conf

find $pa_dir -name "panabit.conf*" -a -mtime +15 -exec rm -f {} \;

$ipectrl stop
sleep 5
$ipectrl start

以上代码已测试通过. 运行时请删除相关中文注释

ssh 请先做相关认证.


再添加到 crontab OK

panabit自动分析域名并添加解析后的IP

标签:panabit dns 自动添加ip

原文地址:http://abian.blog.51cto.com/751059/1680187

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!