安装了Ubuntu10.04后,发现netcat用法有点改变,原来是因为Ubuntu用OpenBSD版的netcat代替了传统版。
监听端口语法
在传统的nc里,监听指定端口的命令是
nc -l -p 8964
在openbsd版下就语法不对,会显示语法帮助信息。看了下手册,说”-l”和“-p”不能同时用,原来是不用“-p”参数了,”-l”后面直接带端口号
nc -l 8964
提交信息没有回复
比如在标准输入构造一个http包请求google的首页
echo -e "GET / HTTP/1.1\n" | nc wwww.google.com 80
在Ubuntu早前的版本,命令提交后会应该显示google的返回信息的,而在10.10下却没有。再翻看手册,语法没变,用wireshark抓包,确定google有返回信息的,只是nc没显示出来就退出了。
百思不得其解,觉得应该是ubuntu的这个版本nc的bug,搜了下launchpad,果然是。原因是Ubuntui修改了一些默认值,临时解决方法是加上“-q 1”参数。
echo -e "GET / HTTP/1.1\n" | nc -q 1 wwww.google.com 80
这个“-q”表示标准输出没有数据持续多少秒就推出,貌似Ubuntu改成0秒了,所以还没等到google返回信息就退出了,所以让nc等多若干秒就行了。
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/14766028/viewspace-705113/,如需转载,请注明出处,否则将追究法律责任。