nc命令全名为netcat,顾名思义就是经过TCP或UDP从网络读写数据。ios
不少事情不必定非得抓包,nc也能发挥巨大做用。redis
一、传输文件chrome
使用<>重定向符(只适用单文件,不推荐、失败时 ">" 产生空文件)shell
nc -l 8888 < demo.txt # 在本机8888端口侦听TCP链接,将收到的数据写入文件网络
nc ip 8888 > demo.txt # 文件接收端:将文件内容经过网络"cat"到远端运维
使用tar传输文件(推荐,好处是保留了原目录结构和权限)curl
tar cz demo1.txt demo_dir/ | nc -l 8888 # 监听8888端口,有链接时开始tar打包并"cat"到远端tcp
nc ip 8888 | tar zx # 链接、接收数据、解压一步到位。测试
二、创建网络管道url
nc -l 8888 # 接收消息
echo msg | nc ip 8888 # 发送消息
三、迁移生产机房数据到测试机房(运维电脑建管道)
tar cz demo1.txt demo_dir/ | nc -l 8888 # 生产机房ipA
nc -l 8888 | tar zx # 测试机房ipB
nc ipA 8888 | nc ipB 8888 # 运维我的电脑,连通两台机器的8888端口。
四、测试网络连通 (排查测试机房的lbg转发udp问题)
curl 调试http,即7层很是高效。但如何调试4层网络呢?答案就是nc
测试机房lbg作了公网udp服务的映射,但测试同窗发现程序出错,怀疑网络问题,找运维同窗排查。
nc -ul 9999 # 服务ipS 监听9999端口 该端口映射到公网 ipVS:portVS
nc -zuv ipS 9999 # 内网udp连通成功 显示Connection to ipS 9999 port [udp/*] succeeded!
nc -zuv ipVS portVS # 公网udp连通失败 显示Connection to ipVS portVS port [udp/*] fail!
1、上如何检查tcp?以上的参数u去掉,默认就是tcp。
2、进一步写出nagios插件,检查udp服务端口(以部署在PP的udp消息推送监控中)
五、代替telnet,测试mc,浮云等等。
echo -e "stats\r\n" | nc ipS portMC # 非交换式查看mc的状态。
echo -e "INFO\r\n" | nc ipS portREDIS # 非交换式查看redis的状态。
非交换的set、get检查浮云ds # 已部署到PP的浮云监控。
六、使用nc发邮件,发送http请求,反弹shell,端口转发等等,请man nc
echo -e "GET / HTTP/1.0\r\n" | nc uc.cn 80