【问题标题】:Check ip is present within file & update iptables bash script检查 ip 是否存在于文件中并更新 iptables bash 脚本
【发布时间】:2020-03-03 07:20:44
【问题描述】:

我想检查 ccd 文件夹中是否存在 ip,并将 ip 路由推送到 iptables 中的 FORWARDING 链。我是 bash 脚本的新手,需要一些帮助来完成这个脚本。

/etc/openvpn/ccd 中的客户端文件:

ifconfig-push 10.8.0.45 255.255.255.0
push 'route 10.10.0.45'

我需要 grep 10.8.0.45 & 10.10.0.45

并将这些路由推送到 iptables 中。 例如

iptables -A FORWARD -s 10.8.0.45 -d 10.10.0.45 -j ACCEPT

客户端连接 /etc/openvpn/on_connect.sh

脚本我需要“grep”或“awk”方面的帮助

static_ip=  cat $CCD_DIR/$common_name | grep -w "ifconfig-push" | awk -F ' ' {'print $2'}

ip_destination=cat $CCD_DIR/$common_name | grep -w "push 'route" | awk -F ' ' {'print $3'}  | tr -d "'"
#!/usr/bin/env bash
#
#  Add iptables rules based on CCD client config.
#

CCD_DIR="/etc/openvpn/ccd"

RULE_COMMENT="FORWARD"$common_name
static_ip=cat $CCD_DIR/$common_name | grep -w "ifconfig-push" | awk -F ' ' {'print $2'}.
ip_destination=cat $CCD_DIR/$common_name | grep -w "push 'route" | awk -F ' ' {'print $3'}  | tr -d "'"



if [ -f $CCD_DIR/$common_name ]; then
  sudo iptables -A FORWARD -s $static_ip -d ip_destination -j ACCEPT
fi

exit 0

编辑:我认为我对 cat 的使用是错误的。

【问题讨论】:

  • 使用命令替换将命令的结果分配给变量。 var=$(command | grep | awk | something | while read line; do echo "$line"; done)cat | grepcat 的常用用法,只需使用grep -w "ifconfig-push" "$CCD_DIR/$common_name"。请记住引用您的变量扩展以防止文件名带有空格。

标签: bash scripting grep iptables


【解决方案1】:

像这样试试。

static_ip=$( cat $CCD_DIR | grep -oE "\b([0-9]{1,3}\.){3}[0-9]{1,3}\b" | grep -E '(^|\s)10.8.0.45($|\s)' )
ip_destination=$( cat $CCD_DIR | grep -oE "\b([0-9]{1,3}\.){3}[0-9]{1,3}\b" | grep -E '(^|\s)10.10.0.45($|\s)' )

所以首先你在文件中grep所有IP的地址,然后你搜索你需要什么

在您发表评论后编辑。

如果我理解正确, "ifconfig-push" - 只有一个对等 ccd 文件吗? 所以你可以使用这个:

static_ip=$( grep -w "ifconfig-push" | awk -F ' ' {'print $2'})

对于“推送路由”中的其余部分,您需要使用循环查找所有匹配的 ip 地址并将它们放入 iptables。

if [ -f $CCD_DIR/$common_name ]
then
 cat $CCD_DIR | awk -F 'route' {'print $2'} | awk -F ' ' {'print $1'} | sed '/^$/d' | grep -E "\b(10)\.(8)\.(0)\.|(10)\.(10)\.(0).\b" | while read ip_destination
 do
  sudo iptables -A FORWARD -s $static_ip -d ip_destination -j ACCEPT
 done
fi

【讨论】:

    猜你喜欢
    • 2023-01-20
    • 2015-07-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-09
    • 2017-06-14
    • 2012-02-27
    • 2010-10-10
    相关资源
    最近更新 更多