1. 程式人生 > 其它 >防火牆設定的小問題(r6筆記第94天)

防火牆設定的小問題(r6筆記第94天)

今天也算忙忙碌碌,處理了不少小問題,自己也總結幾個問題,本來寫點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 可能這種問題可遇不可求,很難碰到,但是碰到了還是讓人有些不知所措。