gpt4 book ai didi

linux - 提交前检查代码

转载 作者:太空宇宙 更新时间:2023-11-04 03:35:11 25 4
gpt4 key购买 nike

我制作了一个 iptables 脚本,如下所示:

#!/bin/sh
echo "Kaveen's TCP Redirect SCRIPT"
clear
read -p "Port:" port
echo ""
read -p "Customer IP:" cusip
echo ""
read -p "Your Filtered IP:" filip
echo ""
read -p "Your Secondary IP:" secip
echo "Generating TCP Redirect on port $port from your ip $filip to customer ip $cusip"
iptables -t nat -A PREROUTING -p tcp -d $filip --dport $port -j DNAT --to- destination $cusip
echo "TCP Redirect 1/2 OK"
iptables -A FORWARD -p tcp -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
echo "TCP Redirect 2/2 OK"
iptables -t nat -A POSTROUTING -d $cusip -j SNAT --to-source $secip
echo "Better Traffic Movement rule 1/1 OK"
iptables -t nat -A POSTROUTING -j SNAT --to-source $filip
echo "Player Movement Rule 1/1 OK"
echo "Generating reset script...."
echo "#!/bin/sh" >> reset.sh
echo "iptables -F" >> reset.sh
echo "iptables -X" >> reset.sh
echo "iptables -t nat -F" >> reset.sh
echo "iptables -t nat -X" >> reset.sh
echo "iptables -t mangle -F" >> reset.sh
echo "iptables -t mangle -X" >> reset.sh
echo "iptables -P INPUT ACCEPT" >> reset.sh
echo "iptables -P FORWARD ACCEPT" >> reset.sh
echo "iptables -P OUTPUT ACCEPT" >> reset.sh
echo "iptables -F" >> reset.sh
echo "iptables -X" >> reset.sh
echo "iptables -t nat -F" >> reset.sh
echo "iptables -t nat -X" >> reset.sh
echo "iptables -t mangle -F" >> reset.sh
echo "iptables -t mangle -X" >> reset.sh
echo "iptables -P INPUT ACCEPT" >> reset.sh
echo "iptables -P FORWARD ACCEPT" >> reset.sh
echo "iptables -P OUTPUT ACCEPT" >> reset.sh
chmod +x reset.sh
echo "Reset script creation OK"
echo "Reset script can be used via ./reset.sh in directory:"
pwd
echo "TCP Redirect made from $fillip to $cusip on port $port"

现在如您所见,其中有一堆 iptables 命令,我想要一个函数,或者某种方式可以检查这些命令,以及是否出现问题。

它返回 FAILED,我还想要一种方法来检查人们为“端口”“客户 IP”输入的输入是否是端口和 IP 地址,而不是字母、单词,而是格式正确的 IP 和端口(对于第一个)

最佳答案

假设您的计算机应该能够路由到所有内容,您可以使用ip route get来帮助确定输入是否是有效的IP地址。如果您向其传递 IP 以外的其他内容,它将失败。

对于端口,您可以很容易地测试它是否是正整数,例如

if [[ $port =~ ^[0-9]+$ ]]; then
echo "It's a non-negative int!"
fi

如果您想知道它是否属于有效的端口范围,您可以测试它是否在您想要的范围内,例如

if [[ $port -gt 0 && $port -lt 65535 ]]; then
echo "Port is probably OK"
fi

可能有一种更简单的方法来检查 IP 部分,但如果您不愿意接受看起来像 IP 但具有无效值(即大于 255 的八位字节)的字符串,那么检查它们会变得很麻烦,但检查系统是否知道如何尝试将数据包发送到 IP 至少对我来说是一个快速的“n”脏站。

可以在 if 中使用任何命令的成功或失败,在本例中为 ip route get,如下所示:

if ip route get $cusip &>/dev/null; then
echo "$cusip is an address I know how to route to"
else
echo "I either didn't know what $cusip is or don't know how to get there"
fi

我添加了 &>/dev/null 来隐藏命令的输出,因为我们不在乎它说什么,我们只想知道是成功还是失败。

关于linux - 提交前检查代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31898993/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com