Regex从Wireguard配置文件获取IP

dldeef67  于 2023-08-08  发布在  其他
关注(0)|答案(1)|浏览(122)

为了自动部署我们的Wireguard VPN连接,我需要一个Regex表达式来获取Wireguard配置文件中为用户分配的IP。
该文件看起来像这样,每个用户都有一个Block:

[Interface]
PrivateKey = ***********
Address = 10.0.0.1
ListenPort= ***
# BEGIN ANSIBLE MANAGED BLOCK name1.lastname1
[Peer]
PublicKey = ******
AllowedIPs = 10.0.0.2
# END ANSIBLE MANAGED BLOCK name1.lastname1
# BEGIN ANSIBLE MANAGED BLOCK name2.lastname2
[Peer]
PublicKey = ******
AllowedIPs = 10.0.0.3
# END ANSIBLE MANAGED BLOCK name2.lastname2

字符串
我只想为一个特定的用户返回AllowedIP。
现在我有这样的东西:第一个月
这在这个网站上工作:regex101.com但是如果我尝试在命令行中使用grep,我不会得到任何返回。
有人能帮我吗?
先谢谢你了。

des4xlb0

des4xlb01#

grep -A4 "^# BEGIN.*name1.lastname1" CONFIGFILE | grep "^AllowedIPs" | cut -d " " -f3

字符串
此解决方案将仅显示第一个IP,并假设用户配置块在前4行中包含该IP。(检查方差后,应调整A4)。
1.通过第一个grep,用户块的相关部分被隔离,只包含一行IP声明。
1.通过第二个grep,结果仅限于具有IP的行

  1. cut消除了线路中除了第一个IP之外的所有内容。
    使用awk可以给予更好的控制,从而获得更可靠的结果。

相关问题