如何将逐行读取 iptables 中的命令放入变量中

如何将逐行读取 iptables 中的命令放入变量中

我的文件.txt:

# hex-strings
160301
160423

我的变量:

abc=`sed '/^$/d; /#/d' file.txt`

并回显“$abc”

160301
160423

完美,但在我的 iptables bash 脚本中不起作用:

#!/bin/bash
iptables -A FORWARD -p tcp -m string --hex-string "|$abc|" --algo bm -j DROP

iptables v1.6.1: Invalid hex char '

我该如何修复变量以便它在 iptables 中运行良好?

PD:如果我应用以下规则,它就可以正常工作:

for string in `sed '/^$/d; /#/d' file.txt`; do
   iptables -A FORWARD -p tcp -m string --hex-string "|$string|" --algo bm -j DROP
done

但它不适用于其他规则。示例(包含 2 个文件,其中字符串为“abc”和“def”)

iptables -N mychain
iptables -A FORWARD -p tcp -m string --hex-string "|$abc|" --algo bm -j mychain
iptables -A mychain -p tcp -m string --hex-string "|$def|" --algo bm -j DROP

这就是为什么我需要变量

相关内容