WiFi ログ スキャナーを作成しようとしています。現在、CTRL+F とキーワードを使用して手動でログを確認しています。そのプロセスを自動化したいだけです。つまり、.txt ファイルを bang して出力を受け取ります。
私はコードの骨組みを手に入れたので、かなり後で作成することができますが、小さな問題が発生しています。スキャナーでファイルを検索し (完了)、その文字列のインスタンスをカウントし (完了)、出現回数を出力し (完了)、その後にその文字列が最後に発生した行番号を含む完全な行を出力します (行番号は必須ではありません。複数ある場合は、どちらがより最近の問題であるかを推測しやすくするだけです)。
現在、文字列を含むすべての行の出力を取得しています。なぜこれが起こっているのかはわかっていますが、最後の行だけを出力するように指定する方法が思いつきません。
これが私のコードです:
import os
from Tkinter import Tk
from tkFileDialog import askopenfilename
def file_len(filename):
#Count Number of Lines in File and Output Result
with open(filename) as f:
for i, l in enumerate(f):
pass
print('There are ' + str(i+1) + ' lines in ' + os.path.basename(filename))
def file_scan(filename):
#All Issues to Scan will go here
print ("DHCP was found " + str(filename.count('No lease, failing')) + " time(s).")
for line in filename:
if 'No lease, failing' in line:
print line.strip()
DNS= (filename.count('Host name lookup failure:res_nquery failed') + filename.count('HTTP query failed'))/2
print ("DNS Failure was found " + str(DNS) + " time(s).")
for line in filename:
if 'Host name lookup failure:res_nquery failed' or 'HTTP query failed' in line:
print line.strip()
print ("PSK= was found " + str(testr.count('psk=')) + " time(s).")
for line in ln:
if 'psk=' in line:
print 'The length(s) of the PSK used is ' + str(line.count('*'))
Tk().withdraw()
filename=askopenfilename()
abspath = os.path.abspath(filename) #So that doesn't matter if File in Python Dir
dname = os.path.dirname(abspath) #So that doesn't matter if File in Python Dir
os.chdir(dname) #So that doesn't matter if File in Python Dir
print ('Report for ' + os.path.basename(filename))
file_len(filename)
file_scan(filename)
それは、ほとんど私の作業コードになる予定です (さらにいくつかの問題検索を追加する必要があります)。テキスト ファイルの代わりに文字列を検索するバージョンがあります。これにより、次が出力されます。
Total Number of Lines: 38
DHCP was found 2 time(s).
dhcp
dhcp
PSK= was found 2 time(s).
The length(s) of the PSK used is 14
The length(s) of the PSK used is 8
そこには一般的なものしかなく、txtファイルではなく文字列になるように変更されていますが、スキャン元の文字列はtxtファイルの内容になります。
PSK についてはあまり心配しないでください。リストされているすべての例が必要です。後の段階でそれらを 1 行に整理できるかどうかを確認します。
補足として、これの多くは以前の検索からごちゃ混ぜになっているので、おそらくこれを行うためのより良い方法があると思います. これは私の現在の懸念事項ではありませんが、この面で提案がある場合は、説明/説明へのリンクを提供してください。なぜあなたの方法が優れているのか. 私はPythonにかなり慣れていないので、主に現在理解していることを扱っています。:)
ご協力ありがとうございます。さらに情報が必要な場合はお知らせください。
ジョー