我是stackoverflow和脚本的新手.我正在寻找帮助以开始编写脚本,而不一定要找人写.
这就是我所拥有的:
File1.csv – 包含一些信息,我只对MAC地址感兴趣.
File2.csv – 有一些不同的信息,但也包含MAC地址.
我需要一个脚本来解析来自file1.csv的MAC地址,并在file2.csv中显示任何MAC地址时记录报告.
问题:
>关于我使用的语言的任何提示,最好是perl,python或bash?
>任何人都可以建议一些所需逻辑的结构(即使只是在伪代码中)?
更新
import csv
#Need to strip out NUL values from .csv file to make python happy
class FilteredFile(file):
def next(self):
return file.next(self).replace('\x00','').replace('\xff\xfe','')
reader = csv.reader(FilteredFile('wifi_clients.csv', 'rb'), delimiter=',', quotechar='|')
s1 = set(rec[0] for rec in reader)
inventory = csv.reader(FilteredFile('inventory.csv','rb'),delimiter=',')
s2 = set(rec[6] for rec in inventory)
shared_items = s1.intersection(s2)
print shared_items
set([])
wifi_clients.csv
macNames, First time seen, Last time seen,Power, # packets, BSSID, Probed ESSIDs
inventory.csv
Name,Manufacturer,Device Type,Model,Serial Number,IP Address,MAC Address,…
解决方法:
这是我采取的方法:
>迭代每个csv文件(python有一个方便的csv模块来完成此操作),捕获mac-address并将其放在一个集合中(每个文件一个).再一次,python有一个很棒的内置集类型. Here’s a good example of using the csv
module和当然,the docs.
>接下来,您可以获得set1(file1)和set2(file2)的交集.这将显示存在于第一个和第二个文件中的mac-addresses.
示例(在python中):
s1 = set([1,2,3]) # You can add things incrementally with "s1.add(value)"
s2 = set([2,3,4])
shared_items = s1.intersection(s2)
print shared_items
哪个输出:
set([2, 3])
记录这些共享项目可以通过打印(然后将输出重定向到文件),使用日志记录模块,直接保存到文件中完成.
我不确定你正在寻找的答案有多深入,但这应该让你开始.
更新:CSV /设置用法示例
bob,123,127.0.0.1,mac-address-1
fred,124,127.0.0.1,mac-address-2
构建集合的最简单方法是这样的:
import csv
set1 = set()
for record in csv.reader(open('foo.csv', 'rb')):
user, machine_id, ip_address, mac_address = record
set1.add(mac_address)
# or simply "set1.add(record[3])", if you don't need the other fields.
显然,对于每个文件,你需要这样的东西,所以你可能想把它放在一个函数中,以使生活更轻松.
最后,如果你想要更简洁但更酷的python方式,你也可以像这样构建集合:
csvfile = csv.reader(open('foo.csv', 'rb'))
set1 = set(rec[3] for rec in csvfile) # Assuming mac-address is the 4th column.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。