公司有安装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
原文地址:http://abian.blog.51cto.com/751059/1680187