python位置参数错误_Python无法识别的参数错误,并显示警告消息

我在我的运行.py脚本。在import time

NUM_PACKETS = 500

import random

import argparse

import threading

from scapy.all import sniff

from scapy.all import Ether, IP, IPv6, TCP

parser = argparse.ArgumentParser(description='run_test.py')

parser.add_argument('--random-dport',

help='Use a random TCP dest port for each packet',

action="store_true", default=False)

args = parser.parse_args()

class PacketQueue:

def __init__(self):

self.pkts = []

self.lock = threading.Lock()

self.ifaces = set()

def add_iface(self, iface):

self.ifaces.add(iface)

def get(self):

self.lock.acquire()

if not self.pkts:

self.lock.release()

return None, None

pkt = self.pkts.pop(0)

self.lock.release()

return pkt

def add(self, iface, pkt):

if iface not in self.ifaces:

return

self.lock.acquire()

self.pkts.append( (iface, pkt) )

self.lock.release()

queue = PacketQueue()

def pkt_handler(pkt, iface):

if IPv6 in pkt:

return

queue.add(iface, pkt)

class SnifferThread(threading.Thread):

def __init__(self, iface, handler = pkt_handler):

threading.Thread.__init__(self)

self.iface = iface

self.handler = handler

def run(self):

sniff(

iface = self.iface,

prn = lambda x: self.handler(x, self.iface)

)

class PacketDelay:

def __init__(self, bsize, bdelay, imin, imax, num_pkts = 100):

self.bsize = bsize

self.bdelay = bdelay

self.imin = imin

self.imax = imax

self.num_pkts = num_pkts

self.current = 1

def __iter__(self):

return self

def next(self):

if self.num_pkts <= 0:

raise StopIteration

self.num_pkts -= 1

if self.current == self.bsize:

self.current = 1

return random.randint(self.imin, self.imax)

else:

self.current += 1

return self.bdelay

pkt = Ether()/IP(dst='10.0.0.1', ttl=64)/TCP()

port_map = {

1: "veth3",

2: "veth5",

3: "veth7"

}

iface_map = {}

for p, i in port_map.items():

iface_map[i] = p

queue.add_iface("veth3")

queue.add_iface("veth5")

for p, iface in port_map.items():

t = SnifferThread(iface)

t.daemon = True

t.start()

import socket

send_socket = socket.socket(socket.AF_PACKET, socket.SOCK_RAW,

socket.htons(0x03))

send_socket.bind((port_map[3], 0))

delays = PacketDelay(10, 5, 25, 100, NUM_PACKETS)

ports = []

print "Sending", NUM_PACKETS, "packets ..."

for d in delays:

# sendp is too slow...

# sendp(pkt, iface=port_map[3], verbose=0)

if args.random_dport:

pkt["TCP"].dport = random.randint(1025, 65535)

send_socket.send(str(pkt))

time.sleep(d / 1000.)

time.sleep(1)

iface, pkt = queue.get()

while pkt:

ports.append(iface_map[iface])

iface, pkt = queue.get()

print ports

print "DISTRIBUTION..."

for p in port_map:

c = ports.count(p)

print "port {}: {:>3} [ {:>5}% ]".format(p, c, 100. * c / NUM_PACKETS)

我尝试使用下面的命令运行脚本

^{pr2}$

它将引发一个无法识别的参数错误,并显示以下消息。在ubuntu@workshop:~/p4lang/tutorials/workshop_/mp$ sudo ./run.py 2

WARNING: No route found for IPv6 destination :: (no default route?)

usage: run.py [-h] [--random-dport]

run_test.py: error: unrecognized arguments: 2

ubuntu@workshop:~/p4lang/tutorials/workshop/mp$

有什么问题吗。我想剩下的运行.py代码没问题,问题就在上面几行。如果需要,我可以添加其余代码。我很长一段时间都是这样。任何输入都会帮助我!在

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值