.png)
У меня есть /etc/init.d/iptables start|stop|restart
скрипт на разных серверах Ubuntu (это обычный скрипт оболочки)
Для каждой новой службы мне приходится редактировать и вставлять строку для открытия порта. Это приводит к появлению множества различных версий скрипта init.d на разных машинах.
Можно ли автоматически включить, скажем, все файлы в /etc/iptables/include.d/
?
Цель состоит в том, чтобы вначинатьфункция /etc/init.d/iptables как
include /etc/iptables/include.d/*
И после дополнительного файла /etc/iptables/include.d/
я бы просто сказал
/etc/init.d/iptables restart
Редактировать:Как указал Саураб, это может привести к проблемам, когда команды требуют определенного порядка. Расширенная настройка может иметь различные каталоги, например:
/etc/iptables/include01.d/
/etc/iptables/include02.d/
/etc/iptables/include03.d/
и включив их следующим образом:
включить /etc/iptables/include01.d/* ... возможно, какой-то код находится здесь, в основном файле... включить /etc/iptables/include02.d/* включить /etc/iptables/include03.d/*
решение1
Добавьте следующую строку в скрипт init.d.
run-parts --report /etc/iptables/include.d
Он запустит все содержимое каталога как скрипт оболочки (он должен быть исполняемым).
Если вы хотите выполнять только файлы, заканчивающиеся на .port, вы можете использовать что-то вроде:
run-parts --regex '\.port$' /etc/iptables/include.d/
Если вы хотите убедиться в правильности порядка, вы можете назвать файлы:
10_web.port
20_ssh.port
etc..
решение2
for f in /etc/iptables/include.d/*
. $f
done
обратите внимание на пробел между точкой и %f
Саураб прав — это не обязательно будет работать так, как вы задумали, но используйте какое-нибудь соглашение об именовании, например, 10-xxx, 20-yyy и т. д., и это может быть приемлемо.
решение3
Вы можете определить простую функцию в bash:
function include() {
for FILE in $( find "$1" -type f -print | sort )
do
source $FILE
done
}
а потом:
include some_dir/*
или даже:
include some_dir/*.conf
решение4
Я не думаю, что можно включать файлы в конфигурацию iptables. Выбор имеет смысл, так как правила брандмауэра во многом зависят от порядка, в котором они написаны. Если мы просто включим файлы в папку, iptables не будет знать, какие правила ставить первыми, а какие — позже.