我在网上找不到与此有关的任何内容,但是我发现我不应该在EOT
上使用引号,但就我而言,如果有人可以在这里帮助我,我就不会这样做。很棒..........
这是设置新Debian
安装的脚本的一部分
问题:
运行时,我无法访问cat/EOT
here-document
内的$ PORT。
setUPiptables()
{
if ! grep -e '-A INPUT -p tcp --dport 80 -j ACCEPT' /etc/iptables.up.rules
then
cat << EOT >> /etc/iptables.test.rules
*filter
IPTABLES-CODE-HERE
# Allows SSH connections
# The --dport number is the same as in /etc/ssh/sshd_config
-A INPUT -p tcp -m state --state NEW --dport $PORT -j ACCEPT
IPTABLES-CODE-HERE
COMMIT
EOT
sleep 5
/sbin/iptables-restore < /etc/iptables.test.rules || exit 127
sleep 5
/sbin/iptables-save > /etc/iptables.up.rules || exit 127
sleep 3
printf "#!/bin/bash\n/sbin/iptables-restore < /etc/iptables.up.rules" > /etc/network/if-pre-up.d/iptables
chmod +x /etc/network/if-pre-up.d/iptables
sleep 6
fi
}
问题:
您能否在$PORT
cat
代码中找到/看到iptables
的问题?
答案 0 :(得分:1)
尝试使用,因为这是此question的重复答案:
cat <<'EOT' >> /etc/iptables.test.rules
答案 1 :(得分:1)
我为在这个问题上花点时间表示歉意,这是一个初学者的错误,因为我正在读取grep
中的文件名,而不是实际的file
(/etc/iptables.test.rules
),所以我在HERE-DOC
试图与$ PORT iptables-save
一起使用的实际文件中多次将duplicates
串联在一起,当然,它会因所有额外的代码而失败(乱码)。
问题已解决……冰岛,抱歉。
因此,我没有创建/编码检查是否设置了iptables且文件/etc/iptables.test.rules
是否存在,因此我将双iptables
附加到已经包含我正在编写的代码的文件中。 / p>
感谢@CharlesDuffy的时间和建议/指导