为了自动部署我们的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,我不会得到任何返回。
有人能帮我吗?
先谢谢你了。
1条答案
按热度按时间des4xlb01#
字符串
此解决方案将仅显示第一个IP,并假设用户配置块在前4行中包含该IP。(检查方差后,应调整
A4
)。1.通过第一个
grep
,用户块的相关部分被隔离,只包含一行IP声明。1.通过第二个
grep
,结果仅限于具有IP的行cut
消除了线路中除了第一个IP之外的所有内容。使用
awk
可以给予更好的控制,从而获得更可靠的结果。