私たちはいくつかのDHCPの問題を解決するために取り組んでいます。私はPythonと正規表現を使ってdhcpd.leasesファイルを解析しています。私は各リース(下のファイルサンプルを参照)ブロックをキャプチャし、IPアドレスとMACをキャプチャする単一の正規表現を作成します。私の正規表現の知識は初歩的ですが、私は正しい道にいると思います。私も助けることは感じることができないPythonとRegexでdhcpd.leasesを解析する
lease 192.168.124.118 {
starts 1 2014/12/01 12:42:49;
ends 1 2014/12/01 20:42:49;
tstp 1 2014/12/01 20:42:49;
binding state free;
hardware ethernet 00:0c:29:d5:ff:cb;
uid "\001\000\014)\325\377\313";
}
lease 192.168.124.117 {
starts 5 2015/05/01 18:49:10;
ends 6 2015/05/02 02:49:10;
tstp 6 2015/05/02 02:49:10;
binding state free;
hardware ethernet 00:0c:29:85:6f:62;
uid "\001\000\014)\205ob";
}
lease 192.168.124.116 {
starts 5 2015/06/05 14:48:40;
ends 5 2015/06/05 22:48:40;
tstp 5 2015/06/05 22:48:40;
binding state free;
hardware ethernet 00:0c:29:d1:3e:0d;
uid "\001\000\014)\321>\015";
}
lease 192.168.123.200 {
starts 5 2012/07/13 11:54:46;
ends 5 2012/07/13 11:57:42;
tstp 5 2012/07/13 11:57:42;
binding state free;
hardware ethernet 88:c6:63:c6:08:52;
uid "\001\210\306c\306\010R";
}
:
コードこれまで:dhcpd.leasesファイルの名前の
import sys, re
fp = '/Users/smitty/Dropbox/Company/Network/DHCP-Info/dhcpd.leases'
f = open(fp)
ftext = f.read()
p = re.compile(ur'(lease\s([\d]*.*).*\n.*\n.*\n.*\n.*\n.*ethernet\s(.*);*.\n.*\n.*})')
raw_record = []
parsed_record = {}
for match in re.findall(p, ftext):
raw_record.append(match)
for record in raw_record:
m = re.search(p, record)
parsed_record[m.group(2)] = m.group(3)
plaintext_record = []
for ip, mac in parsed_record.iteritems():
plaintext_record.append("IP: {0} MAC: {1}".format(ip, mac))
サンプルブロックIは、これまでのすべてのものをキャプチャされていない持っているもの私はここで大会に関するすべての場所にいるようです(リストを作成してから辞表を作成してからリストを作成します)。
2番目のグループについては、MACアドレスが16進数であるため、 '[:a-f0-9]'に変更したいと思うかもしれません。また、(@ P [0-9。] +) '...ちょうど意見の問題 –
の@IronFistのような一致するグループ名を与えることは良いアイデアだと思います。ありがとう! – alecxe
私はこれが好きです - 今それを試してみてください........素晴らしい。以前は 're.MULTILINE'と' re.DOTALL'に慣れていませんでした 私はこのスクリプトをlinuxで呼び出されたいくつかのコマンドラインbashと組み合わせて使用し、ネットワークの解きほぐし(論理的な解きほぐし)を効率化します。 Muchas gracias、danke、grazie、merci、そしてそのすべて。 @IronFist - 私ができる場合は、私はプラス1 – Smitty