【发布时间】:2025-11-22 11:50:01
【问题描述】:
代码中的问题是,如果一个字段被遗漏,则会引发错误,如果我排除错误,则它不会显示任何内容
import pyshark
from tabulate import tabulate
capture = pyshark.FileCapture('/home/sipl/Downloads/DHCP.cap', display_filter='udp.port eq 67')
# capture2 = pyshark.LiveCapture(interface='wlo2', display_filter='arp')
d = dict()
for packet in capture:
try:
d['mac'] = packet.dhcp.hw_mac_addr
d['hname'] = packet.dhcp.option_hostname
d['vend'] = packet.dhcp.option_vendor_class_id
except AttributeError:
pass
try:
d['srvrid'] = packet.dhcp.option_dhcp_server_id
d['smask'] = packet.dhcp.option_subnet_mask
d['DNS'] = packet.dhcp.option_domain_name_server
d['Domain'] = packet.dhcp.option_domain_name
except AttributeError:
pass
try:
d['ip'] = packet.dhcp.option_requested_ip_address
except AttributeError:
pass
try:
table = {'Mac': [d['mac']], 'IP': [d['ip']], 'host': [d['hname']],'vendor': [d['vend']], 'Server id': [d['srvrid']],
'Sub mask': [d['smask']], 'DNS': [d['dns']], 'Domain': [d['Domain']]}
print(tabulate(table, headers='keys'))
except KeyError:
continue
我希望如果缺少一个字段,那么它将我收到的传入字段存储在一个数据包中并显示在表格中,对于空字段它不显示任何内容并将该字段留在表格中。 基本上我希望它存储传入字段并在表中打印,并且不会为丢失的字段引发错误。 我现在在 fileCapture 上尝试检查工作,但我需要在 liveCapture 上执行此操作
【问题讨论】:
标签: python python-3.x dictionary pyshark tabulate