我在ubuntu服务器上有一个基于iptables的防火墙,运行良好。现在,我想在屏幕(CLI)上看到(回显)某些相关的输出。 F.i.我允许某些人通过端口22进行访问,并希望在CLI中回显其名称和ip(运行防火墙时)。假设:
peter="123.456.78.90"
mike="123.456.78.91"
port_ssh="22"
access-port-ssh="$peter $mike"
使用防火墙代码,一切正常,他们可以通过端口22进行访问。 我只想在CLI中回显一行,显示:
IP 123.456.78.90(客户端)可以访问服务器的端口22
以及在防火墙的下一次循环中:
IP 123.456.78.91(迈克)可以访问服务器的端口22
我唯一想知道的是,自从我知道其余内容后,如何在屏幕上获得“彼得”和“麦克”这个名字。循环如下,问题是:我应该使用哪个代码用“ peter”替换“ XXXX”(倒数第二行),然后用“ mike ”运行
>ALLOWED=access-port-ssh; ALLOWED_IPS=${!ALLOWED}
for IP in ${ALLOWED_IPS}; do
${IPTABLES} -A INPUT -i ${LAN_IFACE} -p tcp -s ${IP} --dport ${port-ssh} --sport ${port-ssh} -j ACCEPT
${IPTABLES} -A OUTPUT -o ${LAN_IFACE} -p tcp -d ${IP} --sport ${port-ssh} --dport ${port-ssh} -j ACCEPT
echo "${IP} (XXXX) has access to server, port: ${port-ssh}"
done
编辑帖子以使其更清晰(没有整个上下文): 仅使用变量“ access-port-ssh”时,如何回显变量名(“ peter”和“ mike”)。 我尝试过:
peter="123.456.78.90"
mike="123.456.78.91"
access="$peter $mike"
allowed=access; allowed=${!allowed}
for i in ${allowed}; do variable_name=(${!i@}); echo $variable_name; done