Должно сработать, если исправить неправильное правило:
iptables -t nat -A POSTROUTING -o '!br0' --source 10.24.0.0/24 -j MASQUERADE
^^^^^^^^^
(который никогда не будет совпадать, потому что нет интерфейса с именем!br0
)
в:
iptables -t nat -A POSTROUTING ! -o br0 --source 10.24.0.0/24 -j MASQUERADE
Простой тест для демонстрации iptables не рассматривает '!br0'
как отрицание, используя (проще )фиктивный интерфейс:
ip link add '!test' type dummy
ip address add dev '!test' 10.11.12.1/24
ip link set '!test' up
iptables -I OUTPUT -o '!test'
Теперь вы можете попробовать пропинговать через этот интерфейс:ping 10.11.12.2
и увидеть, например, с помощью iptables-save -c |grep test
, что счетчик увеличивается, когда интерфейс используется, и нет, если нет.
# iptables-save -c|grep test
[1:84] -A OUTPUT -o !test
В виде списка вкладки -разделенных значений :Создайте массив требуемых значений для каждого issue[]
и передайте его в @tsv
.
$ jq -r '.issues[] | [.key,.fields.summary ] | @tsv' file.json
RM-111 6.6.0
В виде строки с двумя значениями, разделенными пробелом. :Создайте строку в двойных кавычках для каждого issue[]
и используйте \(...)
для интерполяции значений в строке.
$ jq -r '.issues[] | "\(.key) \(.fields.summary)"' file.json
RM-111 6.6.0
Проблема с двумя последними вашими командами заключается в том, что первая из них сначала получает .key
, а затем .fields.summary
. Эти две части данных будут выводиться на отдельных строках.
Последняя команда пытается извлечь .key.fields.summary
, который не существует.