~からsystemd.unit のマニュアルページ、ConditionPathExists=、ConditionPathIsSymbolicLink=などの条件を知っています。しかし、私にとって必要なのは、特定のデフォルトゲートウェイアドレスに依存する条件です。
nordvpnd.service
特にオフィスネットワークに接続されていない場合にのみ起動(およびソケット)したいと思います。私のNordVPNサービスはautostart
VPNに設定されており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に置き換えてください。
それがあなたに役立つことを願っています