сценарий оболочки спотыкается с отображением переменных - PullRequest
0 голосов
/ 14 сентября 2018

У меня на сервере Ubuntu работает брандмауэр на базе iptables, который работает нормально.Теперь я хочу видеть (эхо) на моем экране (CLI) определенный связанный вывод.Fi Я даю некоторым людям доступ через порт 22 и хочу отобразить их имена и ip в CLI (когда я запускаю брандмауэр).Скажем:

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 (peter) имеет доступ к серверу, порт 22 * ​​1007 *

и во время следующего запуска цикла в моем межсетевом экране:

IP 123.456.78.91(Майк) имеет доступ к серверу, порт 22 * ​​1013 *

Единственное, что я хочу знать, это как я могу получить имя "Питер" и "Майк" на моем экране, так как остальные я знаю.Цикл выглядит следующим образом, и возникает вопрос: какой код я должен использовать, чтобы заменить «XXXX» (во второй последней строке) на «peter», а следующий запуск - «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

Отредактируйте сообщение, чтобы сделать его более понятным (без всего контекста): как мне отобразить имена переменных ("peter" и "mike"), когда используется только переменная "access-port-ssh".Я попробовал:

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...