我正在尝试使用脚本来显示iptables-save
命令中的 iptables 行号。
该脚本取自以下网站:https://blog.oddbit.com/post/2018-02-08-listing-iptables-rules-with-li/
其名称如下number-rules
:
#!/bin/awk -f
state == 0 && /^-A/ {state=1; chain=$2; counter=1; printf "\n"}
state == 1 && $2 != chain {chain=$2; counter=1; printf "\n"}
!/^-A/ {state=0}
state == 1 {printf "[%03d] %s\n", counter++, $0}
state == 0 {print}
当我执行时,它会引发以下错误:
root@ergesttstsrv:~# iptables -S | number-rules -bash: number-rules: command not found
我检查过awk
了
root@ergesttstsrv:~# which awk
/usr/bin/awk
并将脚本的第一行从 更改#!/bin/awk -f
为/usr/bin/awk -f
,但仍然出现同样的错误。
有没有更好的方法可以做到这一点,iptables -nv -L --line-numbers
或者脚本中的错误是什么?请注意,我对 bash 还很陌生。
答案1
您需要确保number-rules
是可执行文件,然后需要使用./
它从当前工作目录执行它,因为它不在您的路径中 - 所以iptables -S | ./number-rules