买了把瑞士军刀,想起了这个玩意儿。
netcat, cat的网络版,一个十分小巧但却功能强大的工具,构建于传输层(TCP/UDP)之上。
可以作为客户端使用:
1 2 3 4 5 6 | $ # HTTP $ # you could also use 'curl ifconfig.me' to view your external IP. see http://ifconfig.me $ echo -e "GET /ip HTTP/1.0\nUser-Agent: netcat\nHOST: ifconfig.me\n\n" |\ nc ifconfig.me 80 | sed -n '/^[0-9]/p' 106.187.43.43 $ |
1 2 3 4 5 6 7 8 9 | ~$ # FTP ~$ nc dutor.net 21 220 (vsFTPd 2.3.2) USER dutor 331 Please specify the password. PASS ****** 230 Login successful. ^D $ |
还可以监听某个端口,作为服务器使用:
1 2 3 4 5 6 | ~$ echo hi, dutor | nc -l dutor.net 8080& [1] 11015 ~$ nc dutor.net 8080 hi, dutor [1]+ Done echo hi, dutor | nc -l dutor.net 8080 ~$ |
dutor同学用的最多的,还是使用nc来方便快捷的在各个主机之间传输文件,可以从client到server,也可以从server到client,只要明白,nc只是简单地将其标准输入传输到对端,将从对端接受到的内容输出到标准输出:
1 2 | dutor@host1 $ tar czvf stuff.tgz stuff/ && nc -l 8080 < stuff.tgz dutor@host2 $ nc host1 8080 | tar xzvf - |
甚至可以可以使用nc建立文件的中转站。比如,从host1无法直连到host3,只能先连到host2再间接连到host3。如果想从host1向host3传输文件,可以在host2上面建立中转。每次直接传输是client/server还是server/client,都可以实现(当然,如果两台机器有防火墙相隔时,就另说了):
1 2 3 4 | dutor@host2 $ nc -l 5198 | nc -l 5191 dutor@host2 $ # 使用 while true; do nc -l 5198 | nc -l 5191; done 可以建立持久的'中转站' dutor@host1 $ nc host2 5198 < stuff.tgz dutor@host3 $ nc host2 5191 | tar xzvf - |
nc是一个简单,强大,又可以信手拈来的工具,尽情发挥你的想象力吧。
你好!除了代码,此处没有多少原创之物,皆为本人搜集、整理、总结之记录与心得,欢迎转载分享!转载时请尽量注明出处,将不胜感激。祝你健康、快乐!
LCX转发神器,同主机blogger来访,发现一个主机,就我的blogger最木有用心去做,惭愧了。