web-dev-qa-db-ja.com

NetworkManagerにddclientを自動的に呼び出させるにはどうすればよいですか?

NetworkManagerが接続を確立または切断するたびに、ddclientにdyndnsアドレスを更新させるにはどうすればよいですか?

2
Sunday

NetworkManagerは、いくつかの興味深い環境変数を設定して、/ etc/NetworkManager /dispatcher.dに配置されたスクリプトを自動的に呼び出します。これはmanNetworkManagerである程度文書化されていますが、すべての環境変数がそこで説明されているわけではありません。 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)
1
Sunday