我正在创建一个连接同一台机器上的两个以太网卡的网桥。其中一张卡连接到LAN,另一张卡连接到网络设备。看起来像这样

我在两个接口上嗅探数据包,然后使用sendp(x,iface='eth0')在eth1 上嗅探的数据包将它们发送到另一个接口,反之亦然。
我在两个接口上验证了数据包,发现它们是正确的,但是以某种方式我无法获得该设备的IP。下面是我的一段代码,我创建了两个线程,每个接口一个:
from scapy.all import*
**THREAD1:**
pkt=sniff(iface="eth0",store=1,count=1)
outbuff=[]
outbuff+=pkt[:]
for src in outbuff[:]
srcmac=src.sprintf(r"%Ether.src%")
if srcmac==deviceMAC:
pass
else:
sendp(self.outbuff[:],iface="eth1",verbose=0)
**THREAD2:**
pkt=sniff(iface="eth1",store=1,count=1)
outbuff=[]
outbuff+=pkt[:]
for src in outbuff[:]
srcmac=src.sprintf(r"%Ether.src%")
if srcmac==deviceMAC:
sendp(self.outbuff[:],iface="eth1",verbose=0)
else:
pass
Run Code Online (Sandbox Code Playgroud)
有人可以帮我解决这个问题,还是可以为我提出另一种解决方案?
已解决:结合使用Python + IPTABLES和使用TRIGGER的原理可以解决此问题。
下面是Python的一段代码,一直困扰着我.
var=0
while (var <1 or var>100):
var=raw_input('Enter the block number ')
if (var >=1 and var<=100):
print '\nBlock Number : ',var
else:
print 'ERROR!!! Enter again.'
Run Code Online (Sandbox Code Playgroud)
问题是while循环连续迭代而不会中断.任何人都可以帮我如何打破循环.
有没有办法在Python中实现do..while?