如何让 NetworkManager 自动调用 ddclient

如何让 NetworkManager 自动调用 ddclient

每当 NetworkManager 建立或切断连接时,如何让 ddclient 更新我的 dyndns 地址?

答案1

NetworkManager 会自动调用位于 /etc/NetworkManager/dispatcher.d 中的脚本,并设置一些有趣的环境变量。这在一定程度上记录在 man NetworkManager 下,但并非所有环境变量都在此处解释。我使用类似下面的脚本,因为我更喜欢在 dyndns 上使用 VPN 连接的 IP 地址。该脚本还使用列出的多个地址中的最后一个,希望它是最新、最重要的地址。

#!/usr/bin/env python

import sys
import os
import subprocess

env = os.environ
n = int(env['IP4_NUM_ADDRESSES'])
nvpn = int(env.get('VPN_IP4_NUM_ADDRESSES',0))

if nvpn>0:
    ip = env['VPN_IP4_ADDRESS_'+str(nvpn-1)].split('/')[0]
else:
    ip = env['IP4_ADDRESS_'+str(n-1)].split('/')[0]

ret = subprocess.call(['/usr/sbin/ddclient', '-daemon=0', '-syslog', '-use=ip', '-ip='+ip])
sys.exit(ret)

相关内容