- 论坛徽章:
- 0
|
本帖最后由 zhangqingsup 于 2013-12-17 22:56 编辑
回复 2# li0924
你好!我刚刚也是想到了这样的解决方法,还是要谢谢你。但是我发现如下的问题:
tcpdump -l -nn -vvv host 192.168.1.105 | awk '{split($1,a,"."); print a[5]}' | xargs -n1 -I {} lsof -i:{}
我是用上面的这句语句来获取OS中占用某个端口的进程,但是发现
tcpdump -l -nn -vvv host 192.168.1.105 | awk '{split($1,a,"."); print a[5]}' 虽然可以打印出来我要的端口号,但是再用管道却无法把输出传递到后面的xargs -n1 -I {} lsof -i:{}。
但是,如果我使用
echo "192.168.1.5.22" | awk '{split($1,a,"."); print a[5]}' | xargs -n1 -I {} lsof -i:{}
则可以将awk的结果输出到xargs。
似乎tcpdump输出的流没有传递性。
也就是说tcpdump是个连续的输出(不停的抓包),而awk可以持续过滤tcpdump的输出,但是再跟上一个管道后,输出就没有办法再传给别的函数或者命令解析,不知道各位知道有想法么?
//我是在2.6.32.9-70.fc12.i686上运行的tcpdump,不同版本Linux或者Unix版本的tcpdump输出可能不一样。 |
|