Компромисс упоминается вhttps://www.lisenet.com/2016/firewalld-rich-and-direct-rules-setup-rhel-7-server-as-a-router/
Похоже, это связано с использованием «прямых» правил для добавления необработанного правила iptables в таблицу, сгенерированную firewalld
.
Вы просите разрешить переадресацию в любом направлении. Если я правильно понял, то должно быть так:
firewall-cmd --permanent --direct --add-rule ipv4 filter FORWARD 0 -i eth1 -o eth2 -j ACCEPT
firewall-cmd --permanent --direct --add-rule ipv4 filter FORWARD 0 -i eth2 -o eth1 -j ACCEPT
Не зная подробностей, я бы не рекомендовал эту политику. Это означает, что «сеть компании», вероятно, может сканировать вашу конфигурационную сеть на наличие ящиков с жестко запрограммированными паролями по умолчанию. Не личная критика; просто примечание для всех, кто читает это.
Одним из соображений может быть ограничение переадресации на порты SSH, HTTPS и HTTP. В случае, если есть какие-либо механизмы «восстановления пароля» или «отладки» на портах, о которых вы не думаете :-).
Есть несколько способов решить эту проблему. Один из подходов:
#!/bin/bash
for i in *.fasta; do
tokens=( $(echo "${i}" | sed -e 's/_/ /g') )
newName="${tokens[2]}.${tokens[0]}_${tokens[1]}_${tokens[3]}'"
echo "mv ${i} ${newName}"
done
Этот скрипт перебирает каждый файл в текущем каталоге, который заканчивается на .fasta
; каждый раз в цикле переменная ${i}
содержит текущее имя файла.
Затем сценарий использует sed
для замены символов подчеркивания(_
)на пробелы в имени файла и сохраняет это как массив токенов. Для файла с именем Name_ID1_Name2_ID1000.fasta
вы получите:
tokens[0]='Name'
tokens[1]='ID1'
tokens[2]='Name2'
tokens[3]='ID1000.fasta'
Затем сценарий создает newName
на основе этих токенов и вашего описания нужного вам порядка. Наконец, сценарий выводит команду mv
, которую он будет использовать для выполнения переименования.
Если вы запустите сценарий, он напечатает то, что должен был сделать. Вы можете проверить это, чтобы убедиться, что он ведет себя так, как вы хотите. Если это так, то вы можете удалитьecho
:
mv "${i}" "${newName}"
и запустите его снова. При этом он фактически выполнит переименование.