前に、同じ記事を書いたが、なんかubuntuをアップグレードした影響なのか、ちょっと挙動が変わった。
前は、標準入力に渡してあげると、順次変換が実行されていたのだが、今は、まとめて結果が表示される。
多少遅くても、実行時眺めていたかったので、それならpythonで作ればいいやんと思ってとてつもなくと汚く書いた。汚い!!!
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46
|
#!/usr/bin/env python import sys import socket if hasattr(socket, 'setdefaulttimeout'): socket.setdefaulttimeout(1) def line_get_host(line,before_lines, before_host): lines = line.split(' ') before = before_lines.split(' ') if (lines[0] != before[0]): try: host = socket.gethostbyaddr(lines[0])[0] except: host = lines[0] else: host = before_host lines[0] = host new_lines = " ".join(lines) return new_lines, host if __name__ == '__main__': argvs = sys.argv argvc = len(argvs) if ( argvc == 2): of = open(argvs[1], 'r') else: of = sys.stdin before_line = "" before_host = "" for l in sys.stdin: l = l.rstrip('rn') ret = line_get_host(l,before_line, before_host), print ret[0][0], sys.stdout.flush() before_line = l before_host = ret[0][1] |
ファイル名を渡すか、標準入力で渡すかのみです。
|
sys.stdout.flush()を書かないと、オリジナル版と同じように、 まとめ表示になってしまって、結局同じかい!とツッコんでしまった。 |
|
$ tail -50 access_log | logresolve.py |
オリジナルも同じだが、逆引き出来ない時の、タイムアウト時間がちょっと長くて
こっちでは短くしたかったのだが、結局面倒で(実力が無くて)やめた。