天天看點

shell 從檔案擷取資料并指派給變量

需求:從某檔案中讀取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>&lt;$FILE</code>

土辦法,我覺得應該還有更好的辦法可以實作這樣的功能 

本文轉自 yawei555 51CTO部落格,原文連結:http://blog.51cto.com/huwei555/1787463,如需轉載請自行聯系原作者