我在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