我在ubuntu專用服務器上編輯/擴展我的防火牆bash腳本。如何在變量中使用變量?
下面的代碼只是一個摘錄。 下面的目的是爲一些IP重新路由/打開我的(http,ftp,telnet和ssh)端口用於/到3個盒子。
問題是我想在變量中使用變量。 因此--dport ${i}_${j}_port_ext
被f.i正確替換。 --dport box0_http_port_ext
,但不被視爲一個變量(當然)。其實,我想要的應該是--dport $box0_http_port_ext
(介意$
開頭)
我嘗試了幾件事f.i. --dport ${${i}_${j}_port_ext}
或--dport $(${i}_${j}_port_ext)
但這並不好。
box0_http_port_ext="8080"
box0_ftp_port_ext="21"
box0_telnet_port_ext="23"
box0_ssh_port_ext="22"
#
allow_box0_http_port_ip="1.2.3.4 99.98.97.96 55.56.57.58"
allow_box0_ftp_port_ip="1.2.3.4 55.56.57.58"
allow_box0_telnet_port_ip="55.56.57.58"
allow_box0_ssh_port_ip="1.2.3.4"
#
for i in box0 box1 box2
do
for j in http ftp telnet ssh
do
for ips in $allow_${i}_${j}_port_ip
do
$IPTABLES -t nat -A PREROUTING -p tcp -i $LAN_IFACE -s $ips --dport ${i}_${j}_port_ext -j DNAT --to-destination ${i}_ip:${i}_${j}_port_int
done
done
done
請不要看代碼,因爲它是一個摘錄,因此不完整。
的問題是:如何通過利用$i
爲box0和$j
爲HTTP代碼--dport $box0_http_port_ext
。請記住$i
也可以是box1/box2和$j
也可以用替換爲ftp/telnet/ssh。
@ni_hao請分享解決方案,一旦你得到它的修復。 – sundar 2013-02-13 07:44:24