如何在shell脚本中包含目录中的所有文件(在本例中为/etc/init.d/iptables)

Modified on: Sat, 21 Sep 2019 03:40:02 +0800

我在不同的ubuntu服务器上有一个/etc/init.d/iptables start|stop|restart脚本(这是一个普通的shell脚本)

对于每个新服务,我必须编辑并插入一行以打开端口。这导致在不同的机器上有许多不同版本的init.d脚本。

是否可以自动包含让我们说/etc/iptables/include.d/中的所有文件?

目标是/etc/init.d/iptables的 start 函数中只应该有一行

include /etc/iptables/include.d/*

/etc/iptables/include.d/中添加一个文件后,我只想说

/etc/init.d/iptables restart

编辑:正如Saurabh所指出的,当命令需要某个订单时,这可能会导致问题。高级设置可以有不同的目录,如:

/etc/iptables/include01.d/ /etc/iptables/include02.d/ /etc/iptables/include03.d/

并将它们包括在内:

/etc/iptables/include01.d/
/etc/iptables/include02.d/
/etc/iptables/include03.d/
作者:,user12096

最佳答案

将以下行添加到init.d脚本中。

run-parts --report /etc/iptables/include.d

它将作为shell脚本运行目录中的所有内容(需要可执行)。

如果您只想执行以.port结尾的文件,则可以使用某些内容
像:

run-parts --regex '\.port$' /etc/iptables/include.d/

如果您想确保订单正确,可以为文件命名:

10_web.port 20_ssh.port etc..

作者:rkthkr

相关问答

添加新评论