每当 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)