需求:從某檔案中讀取ip位址以及端口号,用iptables打開該ip以及端口
比如檔案内容:
<code>[root@localhost xxx]</code><code># cat ip.txt</code>
<code>192.168.1.20 22</code>
<code>192.168.1.30 10</code>
<code>192.168.1.30 33</code>
手動操作為:
<code>[root@localhost huwei]</code><code># iptables -A INPUT -s 192.168.66.20 -i eth0 -p tcp --dport 22 -j ACCEPT</code>
改寫使用腳本讀取檔案内容,自動添加iptables防火牆規則,腳本為:
<code>[root@localhost xxx]</code><code># cat ip.sh</code>
<code>#!/bin/sh</code>
<code>wan0=</code><code>'eth0'</code>
<code>FILE=</code><code>'/home/huwei/ip.txt'</code>
<code>while</code> <code>read</code> <code>i</code>
<code>do</code>
<code>a=$(</code><code>echo</code> <code>"$i"</code><code>|</code><code>awk</code> <code>-F </code><code>' '</code> <code>'{print $1}'</code><code>)</code>
<code>b=$(</code><code>echo</code> <code>"$i"</code><code>|</code><code>awk</code> <code>-F </code><code>' '</code> <code>'{print $2}'</code><code>)</code>
<code>#此處顯示變量的值,其實可以省略</code>
<code>echo</code> <code>"$a"</code>
<code>echo</code> <code>"$b"</code>
<code>iptables -A INPUT -s $a -i $wan0 -p tcp --dport $b -j ACCEPT</code>
<code>/etc/init</code><code>.d</code><code>/iptables</code> <code>save</code>
<code>done</code><code><$FILE</code>
土辦法,我覺得應該還有更好的辦法可以實作這樣的功能
本文轉自 yawei555 51CTO部落格,原文連結:http://blog.51cto.com/huwei555/1787463,如需轉載請自行聯系原作者