最近做python unittest自动化,需要远程连到web server上抓包,然后远程copy出来 再用scapy分析数据包中http报头。 当远程连到web server上执行tcpdump 抓包的时候,发现 执行完 exec_command(cmd) ,,,self._new_ssh.close() 后远程web server上的执行的tcpdump 进程也退出了,还没来得及抓包,,, 找了半天的原因,也不知道为什么,,,当时想到了是ssh连接断掉后,tcpdump的父进程没了tcpdump会退出,,,但用了后台执行命令也不行,,最后找到原因要用如下命令:
cmd = 'nohup tcpdump -i %s -nn -s 0 host %s -w %s > /dev/null 2>&1 &' %(int_name,self.waf_ip,remote_pcap_file)
如果想抓完包停止tcpdump 命令,可以用pidof tcpdump 或者pid然后再kill -9 pid .