上司からタスクを割り当てられましたが、そのタスクを達成する方法がわかりません。彼は、コマンド ライン スクリプトを使用してさまざまな DNS 管理タスクを実行できるように、スクリプトを作成する必要があります。私はプログラマーではありませんが、少なくとも Python で少し遊んだことがあります。
仕事を達成するための最良の方法はどれかわかりません。このファイルは、(少なくとも人間にとっては) 非常に簡単な 5 行のパターンに従っています。変更される各エントリの唯一の部分は、ドメイン名自体です。
zone "bostire.com" {
type master;
allow-transfer {none;};
file "/etc/bind/zones/bostire.com";
};
zone "caylorscustommolds.com" {
type master;
allow-transfer {none;};
file "/etc/bind/zones/caylorscustommolds.com";
};
zone "contractorsservicesofsek.com" {
type master;
allow-transfer {none;};
file "/etc/bind/zones/contractorsservicesofsek.com";
};
このファイルを追加、削除、およびソートできる機能が必要です。スクリプトの将来の改善のために、次のようにできるように取り組みたいと思います。
add_entry(newdomain.tld)
del_entry(olddomain.tld)
sort_entries()
私の考えでは、世界で最高ではないことを認めていますが、ファイルを何らかの配列に読み取ってソートできるようにする方法を知っていれば、同じ配列の概念を使用して削除できるはずです。sort_entries() あとがきを呼び出すことで、追加は簡単です。
皆さんが私のためにダンのプログラム全体を書いてくれるとは思っていませんが、もしあなたが私を正しい方向に向けてくれたり、私が読むためのいくつかのアイデアを投げ出してくれたりしたら、それは素晴らしいことです!
ソートされたリストを保存していないように見えることに気付きました。というわけで、その理由を調べてみました。Barnacle_Ed の指示に基づいて変更されたコードは次のとおりです。
import re
recordslist = open('/home/bradboy/named.conf.local', 'r+')
myregex = re.compile('^zone.*^\};\n', re.DOTALL | re.MULTILINE)
mylist = myregex.findall(recordslist.read())
mylist.sort()
print len(mylist)
numitems = 0
recordslist.seek(0)
for entry in sorted(mylist):
recordslist.write(entry)
numitems += 1
print numitems
recordslist.truncate()
recordslist.close()
次の出力が生成されます。
bradboy@ns1:~$ python dns.py
1
1
私は何を間違っていますか?