Linux查看监听端口的脚本测试

Stella981
• 阅读 644

本文是按照lfree的博客(https://www.cnblogs.com/lfree/p/10368332.html)中的内容,进行学习、测试、总结的。有些知识点也是在阅读这篇博文时,发现不了解这方面的知识,遂网上搜索相关资料总结了一下。

1:Linux 设备里面有个比较特殊的文件:/dev/[tcp|upd]/host/port 只要读取或者写入这个文件,相当于系统会尝试连接:host 这台机器,对应port端口。如果主机以及端口存在,就建立一个socket 连接。将在,/proc/self/fd目录下面,有对应的文件出现。

/dev/tcp/${HOST}/${PORT} 这个字符串看起来很像一个文件系统中的文件,并且位于 /dev 这个设备文件夹下。但是:这个文件并不存在,而且并不是一个设备文件。这只是 bash 实现的用来实现网络请求的一个接口,其实就像我们自己编写的一个命令行程序,按照指定的格式输入host port参数,就能发起一个socket连接完全一样

[root@DB-Server ~]# cat < /dev/tcp/10.20.57.24/23

-bash: connect: Connection refused

-bash: /dev/tcp/10.20.57.24/23: Connection refused

[root@DB-Server ~]# cat < /dev/tcp/10.20.57.24/22

SSH-2.0-OpenSSH_4.3

[root@DB-Server ~]# echo a > /dev/tcp/10.20.57.24/22

[root@DB-Server ~]# echo $?

0

[root@DB-Server ~]# echo a > /dev/tcp/10.20.57.24/23

-bash: connect: Connection refused

-bash: /dev/tcp/10.20.57.24/23: Connection refused

[root@DB-Server ~]# echo $?

1

[root@DB-Server ~]# netstat -ntlp

Active Internet connections (only servers)

Proto Recv-Q Send-Q Local Address               Foreign Address             State       PID/Program name  

tcp        0      0 0.0.0.0:42304               0.0.0.0:*                   LISTEN      7497/ora_d009_gsp  

tcp        0      0 0.0.0.0:50336               0.0.0.0:*                   LISTEN      7481/ora_d005_gsp  

tcp        0      0 127.0.0.1:2208              0.0.0.0:*                   LISTEN      2936/hpiod         

tcp        0      0 0.0.0.0:57505               0.0.0.0:*                   LISTEN      7521/ora_d015_gsp  

tcp        0      0 0.0.0.0:769                 0.0.0.0:*                   LISTEN      2707/rpc.statd     

tcp        0      0 0.0.0.0:31298               0.0.0.0:*                   LISTEN      7533/ora_d018_gsp  

tcp        0      0 0.0.0.0:13026               0.0.0.0:*                   LISTEN      7469/ora_d002_gsp  

tcp        0      0 0.0.0.0:40227               0.0.0.0:*                   LISTEN      7485/ora_d006_gsp  

tcp        0      0 0.0.0.0:62788               0.0.0.0:*                   LISTEN      7537/ora_d019_gsp  

tcp        0      0 0.0.0.0:58151               0.0.0.0:*                   LISTEN      7473/ora_d003_gsp  

tcp        0      0 0.0.0.0:18728               0.0.0.0:*                   LISTEN      7505/ora_d011_gsp  

tcp        0      0 0.0.0.0:29705               0.0.0.0:*                   LISTEN      7529/ora_d017_gsp  

tcp        0      0 0.0.0.0:60011               0.0.0.0:*                   LISTEN      7493/ora_d008_gsp  

tcp        0      0 0.0.0.0:19819               0.0.0.0:*                   LISTEN      7461/ora_d000_gsp  

tcp        0      0 0.0.0.0:50605               0.0.0.0:*                   LISTEN      7513/ora_d013_gsp  

tcp        0      0 0.0.0.0:11149               0.0.0.0:*                   LISTEN      7465/ora_d001_gsp  

tcp        0      0 0.0.0.0:25487               0.0.0.0:*                   LISTEN      7501/ora_d010_gsp  

tcp        0      0 0.0.0.0:111                 0.0.0.0:*                   LISTEN      2662/portmap       

tcp        0      0 0.0.0.0:28021               0.0.0.0:*                   LISTEN      7517/ora_d014_gsp  

tcp        0      0 0.0.0.0:46038               0.0.0.0:*                   LISTEN      7525/ora_d016_gsp  

tcp        0      0 0.0.0.0:22                  0.0.0.0:*                   LISTEN      2953/sshd          

tcp        0      0 127.0.0.1:631               0.0.0.0:*                   LISTEN      2964/cupsd         

tcp        0      0 0.0.0.0:22392               0.0.0.0:*                   LISTEN      7489/ora_d007_gsp  

tcp        0      0 127.0.0.1:25                0.0.0.0:*                   LISTEN      2999/sendmail: acce

tcp        0      0 0.0.0.0:12508               0.0.0.0:*                   LISTEN      7477/ora_d004_gsp  

tcp        0      0 0.0.0.0:26302               0.0.0.0:*                   LISTEN      7509/ora_d012_gsp  

[root@DB-Server ~]# seq 1 65535 | xargs -I{} echo "echo a > /dev/tcp/10.20.57.24/{} 2>/dev/null 2&>1 ; echo ok=\$?,{}" | bash 2>/dev/null | grep ok=0 | cut -d, -f2

22

111

769

11149

12508

13026

18728

19819

22392

25487

26302

28021

29705

31298

40227

42304

45826

46038

50336

50605

50741

52199

56371

57505

58151

60011

62788

如上测试所示,上面脚本不会记录环回地址(127.0.0.1)的LISTEN端口。而且脚本执行的效率较低,等待时间过长。

2:使用nc命令测试,测试结果发现,这个命令的速度完全秒杀上面脚本。但是也是不能定位环回地址(127.0.0.1)的LISTEN端口。需要指定IP地址127.0.0.1才能定位定位环回地址(127.0.0.1)的LISTEN

root@DB-Server ~]# echo a | nc -w 1 -n -v  10.20.57.24 1-65535 2>/dev/null | grep "succeeded"

Connection to 10.20.57.24 22 port [tcp/*] succeeded!

Connection to 10.20.57.24 111 port [tcp/*] succeeded!

Connection to 10.20.57.24 769 port [tcp/*] succeeded!

Connection to 10.20.57.24 11149 port [tcp/*] succeeded!

Connection to 10.20.57.24 12508 port [tcp/*] succeeded!

Connection to 10.20.57.24 13026 port [tcp/*] succeeded!

Connection to 10.20.57.24 18728 port [tcp/*] succeeded!

Connection to 10.20.57.24 19819 port [tcp/*] succeeded!

Connection to 10.20.57.24 22392 port [tcp/*] succeeded!

Connection to 10.20.57.24 25487 port [tcp/*] succeeded!

Connection to 10.20.57.24 26302 port [tcp/*] succeeded!

Connection to 10.20.57.24 28021 port [tcp/*] succeeded!

Connection to 10.20.57.24 29705 port [tcp/*] succeeded!

Connection to 10.20.57.24 31298 port [tcp/*] succeeded!

Connection to 10.20.57.24 40227 port [tcp/*] succeeded!

Connection to 10.20.57.24 42304 port [tcp/*] succeeded!

Connection to 10.20.57.24 46038 port [tcp/*] succeeded!

Connection to 10.20.57.24 50111 port [tcp/*] succeeded!

Connection to 10.20.57.24 50336 port [tcp/*] succeeded!

Connection to 10.20.57.24 50605 port [tcp/*] succeeded!

Connection to 10.20.57.24 57505 port [tcp/*] succeeded!

Connection to 10.20.57.24 58151 port [tcp/*] succeeded!

Connection to 10.20.57.24 60011 port [tcp/*] succeeded!

Connection to 10.20.57.24 62788 port [tcp/*] succeeded!

[root@DB-Server ~]# echo a | nc -w 1 -n -v  127.0.0.1 1-65535 2>/dev/null | grep "succeeded"

Connection to 127.0.0.1 22 port [tcp/*] succeeded!

Connection to 127.0.0.1 25 port [tcp/*] succeeded!

Connection to 127.0.0.1 111 port [tcp/*] succeeded!

Connection to 127.0.0.1 631 port [tcp/*] succeeded!

Connection to 127.0.0.1 769 port [tcp/*] succeeded!

Connection to 127.0.0.1 2208 port [tcp/*] succeeded!

Connection to 127.0.0.1 11149 port [tcp/*] succeeded!

Connection to 127.0.0.1 12508 port [tcp/*] succeeded!

Connection to 127.0.0.1 13026 port [tcp/*] succeeded!

Connection to 127.0.0.1 18728 port [tcp/*] succeeded!

Connection to 127.0.0.1 19819 port [tcp/*] succeeded!

Connection to 127.0.0.1 22392 port [tcp/*] succeeded!

Connection to 127.0.0.1 25487 port [tcp/*] succeeded!

Connection to 127.0.0.1 26302 port [tcp/*] succeeded!

Connection to 127.0.0.1 28021 port [tcp/*] succeeded!

Connection to 127.0.0.1 29705 port [tcp/*] succeeded!

Connection to 127.0.0.1 31298 port [tcp/*] succeeded!

Connection to 127.0.0.1 40227 port [tcp/*] succeeded!

Connection to 127.0.0.1 42304 port [tcp/*] succeeded!

Connection to 127.0.0.1 46038 port [tcp/*] succeeded!

Connection to 127.0.0.1 50336 port [tcp/*] succeeded!

Connection to 127.0.0.1 50605 port [tcp/*] succeeded!

Connection to 127.0.0.1 57505 port [tcp/*] succeeded!

Connection to 127.0.0.1 58151 port [tcp/*] succeeded!

Connection to 127.0.0.1 60011 port [tcp/*] succeeded!

Connection to 127.0.0.1 62788 port [tcp/*] succeeded!

[root@DB-Server ~]#

这些命令其实是查看服务器处于 LISTENING状态的端口。跟服务器开放的端口是两回事情。如下所示,使用nmap扫描,发现服务器只开放了这些端口。

# nmap 10.20.57.24

Starting Nmap 4.11 ( http://www.insecure.org/nmap/ ) at 2019-02-15 17:01 CST

Interesting ports on 10.20.57.24:

Not shown: 1674 filtered ports

PORT     STATE  SERVICE

22/tcp   open   ssh

631/tcp  closed ipp

1521/tcp open   oracle

3306/tcp closed mysql

5901/tcp closed vnc-1

5902/tcp closed vnc-2

对比测试如下:

Linux查看监听端口的脚本测试

Linux查看监听端口的脚本测试

参考资料:

https://www.jianshu.com/p/80d6b5a61372

http://www.cnblogs.com/chengmo/archive/2010/10/22/1858302.html

点赞
收藏
评论区
推荐文章
blmius blmius
3年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
Easter79 Easter79
2年前
swap空间的增减方法
(1)增大swap空间去激活swap交换区:swapoff v /dev/vg00/lvswap扩展交换lv:lvextend L 10G /dev/vg00/lvswap重新生成swap交换区:mkswap /dev/vg00/lvswap激活新生成的交换区:swapon v /dev/vg00/lvswap
皕杰报表之UUID
​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为
待兔 待兔
2个月前
手写Java HashMap源码
HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22
Jacquelyn38 Jacquelyn38
3年前
2020年前端实用代码段,为你的工作保驾护航
有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )
Wesley13 Wesley13
2年前
mysql设置时区
mysql设置时区mysql\_query("SETtime\_zone'8:00'")ordie('时区设置失败,请联系管理员!');中国在东8区所以加8方法二:selectcount(user\_id)asdevice,CONVERT\_TZ(FROM\_UNIXTIME(reg\_time),'08:00','0
Wesley13 Wesley13
2年前
00:Java简单了解
浅谈Java之概述Java是SUN(StanfordUniversityNetwork),斯坦福大学网络公司)1995年推出的一门高级编程语言。Java是一种面向Internet的编程语言。随着Java技术在web方面的不断成熟,已经成为Web应用程序的首选开发语言。Java是简单易学,完全面向对象,安全可靠,与平台无关的编程语言。
Stella981 Stella981
2年前
Django中Admin中的一些参数配置
设置在列表中显示的字段,id为django模型默认的主键list_display('id','name','sex','profession','email','qq','phone','status','create_time')设置在列表可编辑字段list_editable
Wesley13 Wesley13
2年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
Python进阶者 Python进阶者
8个月前
Excel中这日期老是出来00:00:00,怎么用Pandas把这个去除
大家好,我是皮皮。一、前言前几天在Python白银交流群【上海新年人】问了一个Pandas数据筛选的问题。问题如下:这日期老是出来00:00:00,怎么把这个去除。二、实现过程后来【论草莓如何成为冻干莓】给了一个思路和代码如下:pd.toexcel之前把这