python scapy模块给出错误19,没有设备,即使是有效端口

python scapy模块给出错误19,没有设备,即使是有效端口,python,scapy,Python,Scapy,我真诚的道歉,即使在我搜索并扫描stackoverflow档案以获取我的答案之后。。但即使尝试了几次,我还是遇到了同样的问题 我有一个ubuntu主机。我在上面调用python脚本。作为该脚本的一部分,它将登录到另一个远程ubuntu主机(scapy 2.2.0正在运行)并运行我的scapy函数,以在一个众所周知的端口上生成单播pkt 以下是scapy函数: def send_scapy(self,port='vintf10',num_frames=10,scale_macs=0): '

我真诚的道歉,即使在我搜索并扫描stackoverflow档案以获取我的答案之后。。但即使尝试了几次,我还是遇到了同样的问题

我有一个ubuntu主机。我在上面调用python脚本。作为该脚本的一部分,它将登录到另一个远程ubuntu主机(scapy 2.2.0正在运行)并运行我的scapy函数,以在一个众所周知的端口上生成单播pkt

以下是scapy函数:

def send_scapy(self,port='vintf10',num_frames=10,scale_macs=0):
    '''
    Generates L2 frames(incl Payload) with both Src & Dest MAC == Unicast
    num_frames for each SRC-MAC is sent out. Returns a list of SRC_MAC generated for further verifying in Flow & L2 Tables of VEM
    '''
    src_mac_list = []
    for i in range(num_frames):
              oui = [ 0x00, 0x11, 0x22,
              random.randint(0x00, 0x7f),
              random.randint(0x00, 0xff),
              random.randint(0x00, 0xff) ]
              src_mac = ':'.join(map(lambda x: "%02x" % x, oui))
              src_mac_list.append(src_mac)
    try:
           payload = 'REMOTE REMOTE REMOTE REMOTE REMOTE'
           brcd_log.info ("Payload of the to-be-generated frames = \n%s" % payload)
           brcd_log.info (" SRC MAC LIST  == %s" % src_mac_list)
           for i in range(len(src_mac_list)):
              print "MAC == %s" % src_mac_list[i]
              #sendp(Ether(dst='00:16:17:18:19:20',src=src_mac_list[i])/IP()/payload,iface=port,count = 1)
              pkt = Ether(dst='00:16:17:18:19:20',src=src_mac_list[i])/IP()
              print "PKT == %s" % pkt
              sendp(pkt,iface=port,count = 1)
              brcd_log.info ("Sent Out of Port %s ,1 frame with Unicast Src MAC %s and Unicast Dest MAC 00:16:17:18:19:20" %(port,src_mac_list[i]))


when I run on calling this function as below, the following error comes:
self.remote_kvm = Kvm_Infra(self.vem_2_ip,self.vem2_uname,self.vem2_pwd)
self.remote_kvm.send_scapy() ##

Error:
root@com-node12-36:/home/localadmin# 2014-04-07 22:47:57,520 [INFO] brcd_os - Payload of the to-be-generated frames =
REMOTE REMOTE REMOTE REMOTE REMOTE
2014-04-07 22:47:57,524 [INFO] brcd_os -  SRC MAC LIST  == ['00:11:22:23:bb:88', '00:11:22:5a:e6:b8', '00:11:22:13:70:39', '00:11:22:42:b6:11', '00:11:22:16:a4:ff', '00:11:22:1c:23:88', '00:11:22:3a:3b:b6', '00:11:22:3e:dd:f0', '00:11:22:03:5b:72', '00:11:22:7b:16:d7']
MAC == 00:11:22:23:bb:88
PKT ==  "#»E@
2014-04-07 22:47:57,531 [INFO] brcd_os - Exception Type = <class 'socket.error'>, Exception Object = [Errno 19] No such device
def send_scapy(self,port='vintf10',num_frames=10,scale_macs=0):
'''
使用Src和Dest MAC==单播生成二级帧(包括有效负载)
发送每个SRC-MAC的num_帧。返回为在VEM的Flow&L2表中进一步验证而生成的SRC_MAC列表
'''
src_mac_list=[]
对于范围内的i(num_帧):
oui=[0x00,0x11,0x22,
random.randint(0x00,0x7f),
random.randint(0x00,0xff),
random.randint(0x00,0xff)]
src_mac=':'.join(映射(lambda x:“%02x”%x,oui))
src_mac_list.append(src_mac)
尝试:
有效负载='远程'
brcd_log.info(“要生成的帧的有效负载=\n%s”%Payload)
brcd_log.info(“SRC MAC LIST==%s”%SRC_MAC_LIST)
对于范围内的i(len(src_mac_列表)):
打印“MAC=%s”%src\u MAC\u列表[i]
#sendp(以太(dst='00:16:17:18:19:20',src=src_mac_list[i])/IP()/payload,iface=port,count=1)
pkt=Ether(dst='00:16:17:18:19:20',src=src_mac_list[i])/IP()
打印“PKT==%s”%PKT
sendp(pkt,iface=port,count=1)
brcd_log.info(“从端口%s发出,带有单播Src MAC%s和单播目的地MAC的1帧00:16:17:18:19:20%”(端口,Src_MAC_列表[i]))
当我按如下方式调用此函数时,出现以下错误:
self.remote_kvm=kvm_Infra(self.vem_2_ip,self.vem2_uname,self.vem2_pwd)
self.remote_kvm.send_scapy()##
错误:
root@com-node12-36:/home/localadmin#2014-04-07 22:47:57520[INFO]brcd_os-待生成帧的有效负载=
远程遥控
2014-04-07 22:47:57524[信息]brcd_os-SRC MAC LIST==['00:11:22:23:bb:88','00:11:22:5a:e6:b8','00:11:22:13:70:39','00:11:22:42:b6:11','00:11:22:16:a4:ff','00:11:22:22:1c:23:88','00:11:22:3a:3b:b6','00:11:22:22:3e:dd:f0','00:11:22:03:72','00:11:22:D7B']
MAC==00:11:22:23:bb:88
PKT==“#»E@
2014-04-07 22:47:57531[信息]brcd_操作系统-异常类型=,异常对象=[Errno 19]没有这样的设备

我认为问题可能是,在与远程主机通信时,传输的值被转换为
unicode
。例如,如果用于传输IP地址的格式是
json
,则可能会发生这种情况。尽管打印的值没有显示任何特殊情况,甚至在与预期的
str进行比较时也是如此值,一切看起来都很好,实际上可能底层基础结构无法很好地处理
unicode
。尝试打印所有传输值的类型并将其转换回
str

可以重新复制和粘贴该错误,并对其应用代码格式选项
{}
按钮。@RyPeck:这是错误brcd\u os-异常类型=,异常对象=[Errno 19]没有这样的设备