#!/usr/bin/python3 import os import re import socket def main(): """ # ddns for phuslu.ddns.net /home/phuslu 1.1.1.1(rw,async,no_subtree_check,all_squash,anonuid=1000,anongid=1000) """ with open('/etc/exports', 'rb') as file: lines = file.read().decode().splitlines() pos = next((i for i, x in enumerate(lines) if x.startswith('# ddns')), None) if pos is None or pos == len(lines)-1: return domain = re.search(r' for ([\w\.]+)', lines[pos]).group(1) ip = socket.gethostbyname(domain) newline = re.sub(r'\s+\d{1,3}\.\d{1,3}.\d{1,3}.\d{1,3}\(', ' '+ip+'(', lines[pos+1]) if newline == lines[pos+1]: return lines[pos+1] = newline with open('/etc/exports', 'wb') as file: file.write('\n'.join(lines).encode()) #os.system('exportfs -arv') os.system('/usr/sbin/exportfs -arv >/dev/null') if __name__ == '__main__': main()