Python 防止scapy打印结果

Python 防止scapy打印结果,python,snmp,scapy,Python,Snmp,Scapy,因此,我在Scapy中有一个SNMP脚本,如下所示: for i in range(j, k+1): ip = iprange + str(i) print 'Sending SNMP request to: ' +ip + "\n" p = IP(dst=ip) SNMP(community="public", PDU=SNMPget(id=1416992799, varbindlist=[SNMPvarbind(oid=ASN1_OID("1.3.6.1.2.

因此,我在Scapy中有一个SNMP脚本,如下所示:

for i in range(j, k+1):
    ip = iprange + str(i)
    print 'Sending SNMP request to: ' +ip + "\n"
    p = IP(dst=ip)
    SNMP(community="public", PDU=SNMPget(id=1416992799, varbindlist=[SNMPvarbind(oid=ASN1_OID("1.3.6.1.2.1.1.1.0"))]))
    pkt = sr1(p, timeout=0.08)
当我点击时,我得到了期望的结果(答案为1):


但是,我只希望Scapy在答案为1时打印结果,而不是在我没有命中(0)时打印结果。可以在Scapy中执行此操作吗?

Scapy/sendrecv.py中的第205行读取

if verbose:
    print "\nReceived %i packets, got %i answers, remaining %i packets" % (nbrecv+len(ans), len(ans), notans)
因此,没有选项仅在ans>0时打印此内容(请注意,在函数上下文中无法快捷方式打印此内容)。您可以将源代码更改为

if verbose and len(ans)>0:
    print "\nReceived %i packets, got %i answers, remaining %i packets" % (nbrecv+len(ans), len(ans), notans)
或者更可取的做法是,更好地解析输出

if verbose and len(ans)>0:
    print "\nReceived %i packets, got %i answers, remaining %i packets" % (nbrecv+len(ans), len(ans), notans)