输入命令和抓取回显
pexpect之后接触到paramiko,是基于SSH用于连接远程服务器并执行相关操作的模块,获得的回显也不会乱序,因此这个问题就解决了。
PC网卡vlan tag问题
如果需要从socket层面进行操作或是恢复,确实超出我的能力范围,那么剩下的解决方案就是从tcpdump着手了,因为通过tcpdump可以得到包含vlan tag的报文。麻烦就是在终端上敲入tcpdump后是不会有返回的,会一直卡在那里。最后想到的解决方法简单粗暴:
执行时候需要sudo权限
在Capture_on_ports的时候开始tcpdump -w,紧接着Send_packet函数的最后,通过本机下发命令找到本机所有调用tcpdump的进程并强行kill掉,终于得到了.cap文件,可以随后被sniff成功load。
#ps -ex | grep tcpdump | grep -v grep | awk '{print $1}' | xargs kill
需要注意的是多端口抓包的实现方法是每个端口启动一个独立的threading,一定要留够时间让所有的capure threading都启动,然后再发包,否则可能会错过抓包。
报文过滤
在确定了使用tcpdump方案后,传入的rx_ports_info就是一个dict,key是port名,value是过滤条件。这时候就可以大大方方地传入tcpdump支持的filter,作为tcpdump的option一起下发即可。
放在子目录执行脚本的问题
测试脚本毕竟需要分目录归类,不能都在一个大的文件夹中。只需要在每个子文件中touch init.py,就可以在外边的test_suit