来自systemd.unit 手册页,我知道诸如 ConditionPathExists=、ConditionPathIsSymbolicLink= 等条件。但是,我似乎需要的是一个依赖于特定默认网关地址的条件。
具体来说,我想nordvpnd.service
仅在未连接到办公网络时启动(和套接字)。我的 NordVPN 服务设置为autostart
with killswitch enabled
,这是我希望它在除办公室之外的任何地方都可以使用的方式。
在办公室时,我总是有一个特定的默认网关 IP 地址。看来我可以利用这个事实在单元文件中实现一个条件nordvpnd.service
。谁能建议如何实现这一目标?
[Unit]
Description=NordVPN Daemon
Requires=nordvpnd.socket
After=network-online.target
Condition=??????
[Service]
ExecStart=/usr/sbin/nordvpnd
NonBlocking=true
KillMode=process
Restart=on-failure
RestartSec=5
[Install]
WantedBy=default.target
答案1
我可以建议一些东西,请检查这是否有用:
您可以做的是获取默认网关并设置环境变量,然后使用 ConditionEnvironment 来实现。
以下是可以获取网关IP并设置环境变量的命令:
gw=$(ip r | grep default | grep -oE "([[:digit:]]+\.)+{3}[[:digit:]]")
if [ "$gw" == "192.168.X.X" ]; then export officeNetwork=1; else export officeNetwork=0; fi
这里将192.168.XX替换为你办公室的默认网关IP
希望能帮助到你