【发布时间】: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 | grep是cat的常用用法,只需使用grep -w "ifconfig-push" "$CCD_DIR/$common_name"。请记住引用您的变量扩展以防止文件名带有空格。
标签: bash scripting grep iptables