如何在文件中循环并按照 Openwrt 中的模板创建新文件?

How do I loop inside a file and create a new one following a template in Openwrt?

我有一个 OpenWRT 的策略路由模板,我有大量的 IP 需要插入到这个文件中。

基本上我需要的所有 ip 都在一个名为 bunchofips 的文件中 这是我需要遵循的模板:

config rule 'rule1'
    option dest_ip 'ipcomeshere'
    option proto 'all'
    option use_policy 'secondary'
    option sticky '1'
    option src_ip '192.168.1.1/24'

基本上哪里写了rule1 我需要它为每个IP增加1。所以如果我有 300 个 ips,最后一个将是 rule300。 ipcomeshere是它应该从文件bunchofips中获取的地方,这个文件是这样的:

150.100.32.0/20
130.3.220.0/22
185.5.188.0/22
192.153.127.0/24
112.153.64.0/18
[...]

那么我需要什么样的脚本才能用所有这些 ip 制作这个新文件并能够 运行 在 OpenWRT 路由器中?这可能吗?

谢谢!

我不知道你想要什么格式的输出(例如,单个文件,300x 文件,作为标准输入传递给另一个进程)所以为了这个答案,我将把输出转储到一个文件 'allmyconfigs'.

我还假设您想要用 'bunchofips' 中的整行来替换 'ipcomeshere',例如,将 'ipcomeshere' 替换为 '150.100.32.0/20'

对于这个答案,我们将使用一个简单的 echo 模板和几个变量来自定义每次通过循环的输出,例如:

> allmyconfigs                 # start with an empty file

counter=0

while read -r newip
do
    counter=$((counter+1))

    echo "config rule 'rule${counter}'
    option dest_ip '${newip}'
    option proto 'all'
    option use_policy 'secondary'
    option sticky '1'
    option src_ip '192.168.1.1/24'" >> allmyconfigs

done < bunchofips