设为首页 收藏本站
查看: 1113|回复: 0

[经验分享] panabit自动分析域名并添加解析后的IP

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2015-7-31 08:56:09 | 显示全部楼层 |阅读模式
                      公司有安装panabit行为管理器. 然后做了一些规则限制. 放开了几个域名.比如QQ的企业邮箱.
然后像QQ企业邮箱之类的有时经常换IP.这样如果不知道的话,同事可能就没办法收邮件了...

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


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

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

下面是具体代码:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
#!/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}}if(length(w)==0){print ""}}else{for(i in t){b=b?b"\niprng tid="vtid" ip="t:"iprng tid="vtid" ip="t};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
                   


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.iyunv.com/thread-92514-1-1.html 上篇帖子: linux系统的加密功能及OpenSSL使用 下篇帖子: PPPoE基本原理与配置
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表