【linux】netcat测试监听端口是否开放

需求场景:

系统集成时,我们经常对应客户的服务需求,在防火墙上开放服务端口,但有时客户软件服务尚未部署,我们如何测试已经开放的外网端口?

场景应用:

使用netcat的nc命令完成这个使命,从而让我们快速完成工作,不用等待软件实施部署好服务后再测试一遍。

#nc -l port_number

保持进程job状态,然后通过外网客户端,telnet测试端口,赶快试试吧,当然如果你能确保防火墙的配置没有问题,则无需此步骤。

思考

监听命令执行后,终端会被这个命令锁定,无法进行其它的操作,当然我们可以直接让监听命令在后台运行,从而不影响终端上其它的操作。

#nc -l port_number &

"&"服务,在linux的shell终端中,至于命令的末尾,表示让命令在后台运行。

当然这样一来命令的输出我们无法查看,将其重定向到另一个文件里即可。

command >out.file 2>&1 &

我们还可以通过以下几个命令来调用后台的命令并对其操作:

#jobs    ---查看当前后台执行命令的工作状态;
#fg %jobnumber   ---将后台执行的命令任务拿到前台处理,jobnumber工作序列号可以通过jobs查看;
#bg %jobnumber   ---将指定任务放到后台中处理;
[Ctrl + z]       ---将前台当前运行的命令任务丢到后台中并暂停;
#kill pro-id      ---将后台执行的任务杀死,可以通过“jobs -l”命令查看进程id;
#nohup command >myout.file 2>&1 这个厉害了,及时注销了当前用户,使后台的命令保持运行不挂起。

应用扩展:

netcat被誉为网络安全界的’瑞士军刀’,简称NC,一个简单而实用的工具,他的强大自然不仅仅是监听任意测试端口那么简单。

netcat透过使用TCP或UDP协议的网络连接去读写数据,是一个稳定而强大的后门工具,同时,它也是一个网络应用Debug分析器,短小而精悍。

netcat分为linux版本和windows版本,其中windows版本这里不做多说,可以自己下载研究一下:windows—NETCAT-32c&64c-v1.12下载地址

现在就一起跟随博主研究总结一下nc命令的强大吧!

基于linux的nc命令:

[root@Moni ~]# type -a nc
nc is /usr/bin/nc
[root@Moni ~]# rpm -qa nc
nc-1.84-22.el6.x86_64
[root@Moni ~]# uname -r
2.6.32-504.el6.x86_64

实例环境:server1:192.168.10.10 && server2:192.168.10.11

功能①:远程拷贝文件

从server1拷贝文件到server2上。需要先在server2上,用nc激活监听,

server2上运行: nc -l 1234 > text.txt
server1上运行: nc 192.168.10.11 1234 < text.txt

※ server2上的监听要先打开用来接受文件的监听端口,然后在server1上执行拷贝命令。

功能②、克隆硬盘或分区

操作与上面的拷贝是雷同的,只需要由dd获得硬盘或分区的数据,然后传输即可。

克隆硬盘或分区的操作,不应在已经mount的的系统上进行,如果不是系统磁盘则可直接克隆即可;

所以,系统磁盘或分区需要使用安装光盘引导后,进入拯救模式(或使用Knoppix工具光盘)启动系统后;

同样在server2上进行类似的监听动作:

nc -l 1234 | dd of=/dev/sdac

server1上执行传输,即可完成从server1克隆sda硬盘到server2的任务:

dd if=/dev/sda | nc192.168.10.11 1234

※ 完成上述工作的前提,是需要落实光盘的拯救模式支持服务器上的网卡,并正确配置IP。

功能③、端口扫描

可以执行:

# nc -v -w 2 192.168.10.11 -z 21-24
nc: connect to 192.168.10.11 port 21 (tcp) failed: Connection refused
Connection to 192.168.10.11 22 port [tcp/ssh] succeeded!
nc: connect to 192.168.10.11 port 23 (tcp) failed: Connection refused
nc: connect to 192.168.10.11 port 24 (tcp) failed: Connection refused

※ -z后面跟的是要扫描的端口

功能④、聊天

nc还可以作为简单的字符下聊天工具使用,同样的,server2上需要启动监听:

server2上启动:# nc -l 1234

server1上传输:# nc 192.168.10.11 1234

※ 这样,双方就可以相互交流了。使用Ctrl+D正常退出。

扩展:linux中的另一个命令可以系统内多终端的单向聊天:“write username pts/0”、可以使用w命令查看当前在线终端。

功能⑤、传输目录

从server1拷贝nginx-0.6.34目录内容到server2上。需要先在server2上,用nc激活监听,

server2上运行:# nc -l 1234 |tar xzvf -
server1上运行:# tar czvf - nginx-0.6.34|nc 192.168.10.11 1234c

功能⑥、用nc命名操作memcached

1)存储数据:printf “set key 0 10 6rnresultrn” |nc 192.168.10.11 11211
2)获取数据:printf “get keyrn” |nc 192.168.10.11 11211
3)删除数据:printf “delete keyrn” |nc 192.168.10.11 11211
4)查看状态:printf “statsrn” |nc 192.168.10.11 11211
5)模拟top命令查看状态:watch “echo stats” |nc 192.168.10.11 11211
6)清空缓存:printf “flush_allrn” |nc 192.168.10.11 11211 (小心操作,清空了缓存就没了)

最后相关案例还可以参考:【wordpress】站点的手动备份、还原、升级


(好的今天就分享到这里,如果您有高见或好的分享,记得留言哦!)


原创文章,转载请注明:转自于公牛博客

本文链接地址:【linux】netcat测试监听端口是否开放

2
祝福我们的祖国繁荣昌盛
  • 请尽情挥洒您的笔墨!