前提・実現したいこと
①同じネットワーク(Wi-Fi)に接続しているデバイスのMACアドレスを5分間隔程度で定期取得。
②取得したデータを、CSVファイル形式を用いて、0,1のダミー変数(そのMacアドレスがあれば1、なければ0)を用いた時系列表にする。新規に取得したMacアドレスは随時ラベルに追加する。
③完成したデータをもとに、グラフにする。
というような内容を.pyファイルを作成し、ターミナルで実行して、こちらが終了させるまで動き続けるコードを書きたいと思っています。
発生している問題・エラーメッセージ
①に関しては、ほぼほぼできていると思っています。
実際指定した間隔で応答のあるデバイスのMacアドレスの一覧をCSVファイルに起こすことはできました。
しかし、②に関して全く手詰まりです。なにぶんプログラミングに不慣れなもので、
1, どうやってそのMacアドレスが今まで出てきていないものか判断するか。
2, どうやって0,1の数字を用いた表形式に表せるか。
の2点がさっぱりできません。if文を使うのではないかと思ってはいるのですが・・・
途中までのソースコードを載せておきます。
エラーメッセージ
該当のソースコード
Python
1import subprocess 2import pprint 3from time import sleep 4 5cmd = "sudo arp-scan -l --interface en0 | grep -i '[0-9A-F]\{2\}(:[0-9A-F]\{2\})\{5\}' | tr '\t' '|' | cut -d '|' -f2 | cut -d '|' -f1" 6loop = [ 0 ] 7file = open( " Macad.csv " , "w+") 8for i in loop: 9 out = subprocess.check_output(cmd, stderr=subprocess.STDOUT, shell=True, universal_newlines=True).split()[0:-1] 10 new_out = ',\n'.join(out) 11 address_list = [] 12 address_list.append(new_out) 13 pprint.pprint(address_list, width=15, compact=True) 14 new_flag = 1 if new_out in address_list else 0 15 ex_out = "{},{}\n".format(new_out, new_flag) 16 file.write(ex_out) 17 sleep(5) 18 loop.append(i + 1) 19
試したこと
if文を試そうとしたのですが、どうやって今までのファイルの中に同じ文字列が存在しているかなどのため仕方がわからず断念しました。
補足情報(FW/ツールのバージョンなど)
回答1件
あなたの回答
tips
プレビュー