firewall-cmd --zone public --list-all | awk '/services/ { for (i=2;i<=NF;i++) { print $i;system("grep -o port=.* /usr/lib/firewalld/services/"$i".xml") } }'
Решение с использованием firewalld -cmd и awk будет таким, как указано выше. Запустите команду firewall -cmd --zone public --list -all, чтобы получить список служб, а затем вытащите строку services с помощью awk. Перебирая каждую службу в этой строке (разделенное пробелом слово ), мы выполняем команду grep, ища любые порты в/usr/lib/firewalld/services/<service name>.xml
Обратите внимание, что существует риск, связанный с внедрением команд при выполнении системной функции awk.
Компоненты MacOS с открытым исходным кодом можно найти в https://opensource.apple.com/, а пакет, в который включен arch
, называется system_cmds
.
К сожалению, ссылки на Catalina (10.15.x )кажутся недоступными на момент написания этого (это не редкость, потому что Apple обычно публикует исходники с некоторой задержкой ).
Вероятнее всего, вам нужна версияsystem_cmds-854.11.2
(ссылка находится по адресу https://opensource.apple.com/release/macos-1015.html, но на данный момент она не работает ).
Однако, если вас устраивает версия для Мохаве (10.14.x ), то вы можете получить исходники здесь:https://opensource.apple.com/source/system_cmds/system_cmds-805.250.2/arch.tproj/
Надеюсь, это поможет!
Примечание. :Если вам действительно нужна версия Catalina, вам придется подождать, пока Apple не опубликует ее на указанном выше веб-сайте.