带有回显变量的Shell脚本绊脚石

时间:2018-09-14 13:53:34

标签: shell variables

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

0 个答案:

没有答案