今天也算忙忙碌碌,处理了不少小问题,自己也总结几个问题,本来写点MySQL和mongoDB的东西,发现还是没有准备好,再补补分享给大家。
### 批量处理防火墙权限开通
每天都会接到不少的请求,有一部分是关于权限开通的,一般的流程就是登陆到目标机器,然后赋予相应的协议和端口,如果检查发现已经开通了权限,就不需要了。
所以如果要开通某个客户端的权限,可能对应很多台服务器,这样一来,处理工作就是大批量的重复性劳动,而且还繁琐。
所以磨刀不误砍柴工,先写个简单脚本来做个半自动化。
#!/usr/bin/expect
set dbip_addr [lindex $argv 0]
set dbip_port [lindex $argv 1]
set ip_addr [lindex $argv 2]
set timeout 5
spawn scp -r open_firewall_dep.sh $dbip_addr:/home
send "exit \r"
expect eof
spawn ssh $dbip_addr
send "sh /home/open_firewall_dep.sh $ip_addr $dbip_port \r"
expect eof
这个脚本会调用例外一个真正校验的脚本,内容如下,这个脚本会去检查防火墙的设置,如果没有对应的端口权限,就去设置,如果存在则忽略。
ip_exists_flag=`iptables -nvL|grep -w $1|wc -l`
echo $ip_exists_flag "ip address is founded from firewall list"
if [ ${ip_exists_flag} -eq 0 ];then
echo "iptables -I INPUT -s $1 -p tcp -m multiport --dports $2 -i `ifconfig |head -1|awk '{print $1}'` -j ACCEPT ";
iptables -I INPUT -s $1 -p tcp -m multiport --dports $2 -i `ifconfig |head -1|awk '{print $1}'` -j ACCEPT
echo "iptables -nvL|grep -w $1 ";
iptables -nvL|grep -w $1
echo "service iptables save";
service iptables save
else
echo "nothing to do";
fi
运行脚本只需要输入服务ip, 端口,客户端ip即可。
./b.sh 10.6.48.105 1521 10.127.142.168
前几天配置了好几百台的服务器权限开通,使用这个方法就花了大概10多分钟就搞定了。而且会进行基本的校验,linux环境下没有问题,暂时排除了Unix的设置。
#####Solaris的vi问题
至于solaris的防火墙设置,会和linux有差别,举一个例子。
echo 'pass in quick on e1000g0 proto tcp from 10.127.xxxx to any port = 1522' | ipf -f -
/etc/ipf/ipf.conf ||pass in quick on e1000g0 proto tcp from 10.127.xxxxx to any port = 1522
ipfstat -io|grep "10.127"
但是在solaris上使用vi编辑文件,结果有了下面的警告,让人匪夷所思。 root@xxxxx # vi /etc/ipf/ipf.conf linux: Unknown terminal type I don't know what kind of terminal you are on - all I have is 'linux'. [Using open mode] "/etc/ipf/ipf.conf" 933 lines, 62110 characters block in log on e1000g0 from any to any # echo $TERM linux 解决方法就是设置为其它的TERM,比如 TERM=vt100 可能这种问题可遇不可求,很难碰到,但是碰到了还是让人有些不知所措。