【发布时间】:2019-06-14 04:39:39
【问题描述】:
当我阅读How do I use shell variables in an awk script? 的答案时,我不确定如何正确编写使用 shell 变量的特定 awk 命令的脚本。
接受的答案演示了如何在awkcommand 中插入 shell 变量会很容易发生恶意代码注入,虽然我能够重现演示,但我找不到以下两个命令中的任何一个的相同问题:
#HWLINK=enp10s0
ip -o route | awk '/'$HWLINK'/ && ! /default/ {print $1}'
ip -o route | awk "/$HWLINK/"' && ! /default/ {print $1}'
所以,主要问题是这些(或两者)中的任何一个(或两者)是否易受攻击。
次要问题是首选哪种形式。我试过ip -o route | awk -v hwlink="$HWLINK" '/hwlink/ && ! /default/ {print $1}' 但这不起作用。
附言这是一个重构;原来的命令是ip -o route | grep $HWLINK | grep -v default | awk '{print $1}'。
【问题讨论】:
标签: linux bash shell awk code-injection