【夏虫语冰】测试服务器端口是否打开(命令行、Python)

文章目录

  • 1、简介
  • 2、命令行
    • 2.1 telnet
      • 2.1.1 工具简介
      • 2.1.2 工具配置
      • 2.1.3 工具使用
    • 2.2 curl
      • 2.2.1 工具简介
      • 2.2.1 工具下载
      • 2.2.1 工具使用
    • 2.3 wget
      • 2.3.1 工具简介
      • 2.3.2 工具下载
      • 2.3.2 工具使用
    • 2.4 nc
      • 2.4.1 工具简介
      • 2.4.2 工具安装
      • 2.4.3 工具使用
    • 2.5 ssh
      • 2.5.1 工具简介
      • 2.5.2 工具使用
    • 2.6 nmap
      • 2.6.1 工具简介
      • 2.6.2 工具安装
      • 2.6.2 工具使用
  • 3、Python
    • 3.1 sock.connect_ex
    • 3.2 sock.connect
    • 3.3 telnet命令
    • 3.4 nc命令
    • 3.5 ping命令
    • 3.6 requests检查http端口
    • 3.7 Scapy库
  • 结语

1、简介

接口测试主要用于外部系统与系统之间以及内部各个子系统之间的交互点,定义特定的交互点,然后通过这些交互点来,通过一些特殊的规则也就是协议,来进行数据之间的交互。

一台服务器为什么可以同时是Web服务器,也可以是FTP服务器,还可以是邮件服务器呢,其中一个很重要的原因是各种服务采用不同的端口分别提供不同的服务,比如:通常TCP/IP协议规定Web采用80号端口,FTP采用21号端口等,而邮件服务器是采用25号端口。这样,通过不同端口,计算机就可以与外界进行互不干扰的通信。

在这里插入图片描述

2、命令行

2.1 telnet

2.1.1 工具简介

Telnet协议是TCP/IP协议族中的一员,是Internet远程登录服务的标准协议和主要方式。它为用户提供了在本地计算机上完成远程主机工作的能力。telnet是基于tcp/ip协议的,因此只能用于检测tcp的端口是否开放。
在这里插入图片描述
在这里插入图片描述

2.1.2 工具配置

telnet ip port

之前测试服务器某一端口开启开启情况一般在服务器上使用 netstat –ano|findstr “端口号”命令查看。
但是有时候端口在服务器上开通了,但是客户端并不一定可以访问到,那么在客户端上如何验证机器是否可以正常访问到服务器的端口呢?可以使用telnet命令来查看。
输入一下命令检查telnet是否配置好了。

telnet

在这里插入图片描述
发现telnet命令没有找到。如果提示“不是内部或外部命令”则需要在“程序和功能”中开启telnet。
需要配置一下。在控制面板中选择“程序和功能”,在“程序和功能”界面选择“打开或关闭Windows功能”。在弹出的“windows功能”窗口中将Telnet服务器和Telnet客户端勾选并保存设置。设置完成后需要重新打开一个命令行窗口运行telnet命令,设置前打开的命令窗口运行telnet是无效的。具体步骤如下:
在这里插入图片描述
控制面板——程序——启动或关闭windows功能——勾上telnet client。
在这里插入图片描述
在这里插入图片描述

2.1.3 工具使用

然后再测试一下telnet命令.

telnet

在这里插入图片描述
说明配置成功。
我们再试试测试一下一个不存在的端口。

telnet 127.0.0.1 80

在这里插入图片描述
提示报错了。
我们再试试测试一下百度。

telnet www.baidu.com 80

在这里插入图片描述
在CMD命令框中输入 “telnet IP地址或者域名 端口号”,如果弹出黑色窗体,表示连接成功。
接着操作如下:

ctrl+]
st

在这里插入图片描述

2.2 curl

2.2.1 工具简介

curl 是常用的命令行工具,用来请求 Web 服务器。它的名字就是客户端(client)的 URL 工具的意思。

curl 的功能非常强大,命令行参数多达几十种。如果熟练的话,完全可以取代 Postman 这一类的图形界面工具。

curl 支持DICT, FILE, FTP, FTPS, GOPHER, GOPHERS, HTTP, HTTPS, IMAP, IMAPS, LDAP, LDAPS, MQTT, POP3, POP3S, RTMP, RTMPS, RTSP, SCP, SFTP, SMB, SMBS, SMTP, SMTPS、TELNET、TFTP、WS 和 WSS。curl 支持 TLS 证书、HTTP POST、 HTTP PUT,FTP 上传,基于 HTTP 表单的上传,代理(SOCKS4、SOCKS5、HTTP 和 HTTPS), HTTP/2, HTTP/3, cookie, 用户+密码身份验证 (基本, Plain, Digest, CRAM-MD5, SCRAM-SHA, NTLM, Negotiate, Kerberos, Bearer tokens 和 AWS Sigv4)、文件传输恢复、代理隧道、HSTS、Alt-Svc、unix 域套接字,HTTP压缩(gzip,brotli和zstd),etags,并行 传输、HTTPS 上的 DNS 等。

2.2.1 工具下载

  • 命令工具的下载地址:
    https://curl.se/download.html
    在这里插入图片描述

2.2.1 工具使用

curl ip:port

我们再试试测试一下百度。

curl www.baidu.com

在这里插入图片描述

curl 127.0.0.1
# or
curl 127.0.0.1:5000

在这里插入图片描述

2.3 wget

2.3.1 工具简介

命令行实用工具 使用 HTTP、HTTPS 和 FTP 协议检索文件。
wget是一个强力方便的命令行下的下载工具,可以通过HTTP和FTP协议(两种最广泛的互联网协议)从因特网中检索并获取文件。

2.3.2 工具下载

https://eternallybored.org/misc/wget/
在这里插入图片描述

2.3.2 工具使用

wget ip:port
# or
wget localhost:5000

在这里插入图片描述

2.4 nc

2.4.1 工具简介

nc命令是功能强大的网络工具。nc是netcat的简写,有着网络界的瑞士军刀美誉。因为它短小精悍、功能实用,被设计为一个简单、可靠的网络工具。
比如大家很熟悉使用telnet测试tcp端口,而nc可以支持测试linux的tcp和udp端口,而且也经常被用于端口扫描,甚至把nc作为server以TCP或UDP方式侦听指定端口做简单的模拟测试。

nc(netcat) 是一个简单的 Unix 工具,它使用 TCP 或 UDP 协议去读写网络连接间的数据。

2.4.2 工具安装

工具安装命令:

yum install nc -y

2.4.3 工具使用

# nc -z -v -n 127.0.0.1 6379
# nc -z -v -n 172.17.26.137 6379
# nc -z ip port 或 nc -v -w 1 ip -z port
# nc –uz IP port(u代表UDP)nc -v -w 1  ip -z port
# or
nc -v -w 1  localhost -z 80

在这里插入图片描述

2.5 ssh

2.5.1 工具简介

SSH(Secure Shell,安全外壳)是一种网络安全协议,通过加密和认证机制实现安全的访问和文件传输等业务。
在这里插入图片描述

  • SSH和其他传输协议的区别
    • 传统远程登录和文件传输方式,例如Telnet、FTP,使用明文传输数据,存在很多的安全隐患。随着人们对网络安全的重视,这些方式已经慢慢不被接受。

    • SSH协议通过对网络数据进行加密和验证,在不安全的网络环境中提供了安全的网络服务。作为Telnet和其他不安全远程shell协议的安全替代方案,目前SSH协议已经被全世界广泛使用,大多数设备都支持SSH功能。
      在这里插入图片描述

  • SSH和SSL的区别
    • SSH和SSL都是网络安全协议,通过加密和认证提升两台设备间传输数据的安全性。但SSH和SSL的生效方式和服务目标存在差异。
    • SSH在两台设备间创建安全隧道,使这两台设备间可以安全地发送命令、传输数据等。例如,客户端通过SSH远程登录到一台服务器上,就可以安全地远程管理这台服务器,在服务器上执行想要的命令。
    • SSL则是使用SSL证书保证两台设备间安全地传输数据,而不是像SSH那样可以执行命令。例如,用户通过浏览器访问某安装了SSL证书且启用了HTTPS的服务器,浏览器和服务器之间可以安全地传输数据。
    • SSH就像一辆汽车,我们看不到这辆封闭的汽车里装载的是什么。而SSL就像一个封闭的集装箱,我们可以用不同的交通工具运输它,但看不到集装箱里装的是什么。

在 Linux 系统上 SSH 是非常常用的工具,通过 SSH Client 我们可以连接到运行了 SSH Server 的远程机器上。SSH Client 的基本使用方法是:

ssh -v -p port username@ip
# or
ssh user@remote -p port

user 是你在远程机器上的用户名,如果不指定的话默认为当前用户
remote 是远程机器的地址,可以是 IP,域名,或者是后面会提到的别名
port 是 SSH Server 监听的端口,如果不指定的话就为默认值 22

  • windows
    在这里插入图片描述
  • linux
    在这里插入图片描述

2.5.2 工具使用

ssh -v -p port username@ip

2.6 nmap

2.6.1 工具简介

nmap(“Network Mapper”)是一个用于网络探索和安全审计的开源工具,被设计用来快速地扫描大规模网络,尽管对于单个主机它也同样能够正常工作。

nmap 扫描器主要基本功能有三个,一是探测一组主机是否在线,其次是扫描主机端口,嗅探所提供的网络服务,还可以推断主机所用的操作系统。也可以深入探测 UDP 或者 TCP 端口,直至主机所使用的操作系统;还可以将所有探测结果记录到各种格式的日志中, 供进一步分析操作。

2.6.2 工具安装

yum install nmap -y
#or
sudo apt install nmap

在这里插入图片描述

2.6.2 工具使用

nmap 127.0.0.1 -p 80

在这里插入图片描述
检测端口成功!!!

nmap 127.0.0.1 -p 8080

在这里插入图片描述
检测端口失败!!!

查看当前开放的端口:nmap localhost;
查看主机端口(1024-65535)中开放的端口:nmap -p 1024-65535 localhost;
探测目标主机开放的端口:nmap -PS ip 地址;
探测所列出的目标主机端口:nmap -p22,80,3306 ip 地址;
探测目标主机操作系统类型、端口服务名称、版本信息:nmap -sV -O localhost。
  • 扫描具有范围的所有TCP端口 (Scan All TCP Ports with Range)
    我们可以使用-p选项指定端口范围。 我们知道TCP端口号介于和65535 。 我们将使用-p0-65535作为选项,以扫描所有TCP端口。 我们未指定TCP协议,因为Nmap端口扫描的默认协议为TCP。
nmap -p0-65535 192.168.122.1
  • 更快扫描所有端口 (Faster Scan For All Ports)
    如果我们要扫描所有端口,则将花费大量时间。 如果情况不是很紧急,我们可以使用带有-T5参数的更快扫描。 这是Nmap最快的扫描级别。 此选项也可用于UDP扫描。
nmap  -p0-65535 192.168.122.1 -T5

3、Python

3.1 sock.connect_ex

使用socket模块的connect_ex来判断端口是否打开

import socketdef check_port(ip, port):  sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)  sock.settimeout(5)  try:  result = sock.connect_ex((ip, port))  if result == 0:  return Trueelse:  return Falseexcept Exception as e:  print(f"错误: {str(e)}")  finally:  sock.close()if __name__ == '__main__':      host = 'localhost'port = 8000if check_port(host, port):print(f'The port {port} on {host} is open.')else:print(f'The port {port} on {host} is closed.')

执行结果如下:
在这里插入图片描述

3.2 sock.connect

import socketdef check_port(host, port):try:sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)sock.settimeout(1)sock.connect((host, port))sock.close()return Trueexcept:return Falsefinally:  sock.close()if __name__ == '__main__':ret = check_port('127.0.0.1', 80)print("80: ", ret)ret = check_port('127.0.0.1', 8000)print("8000: ", ret)

在这里插入图片描述

3.3 telnet命令

telnet <IP地址> <端口>
import os  def check_port(ip, port):  result = os.system(f"telnet {ip} {port}")   #windows# result = os.system(f"telnet {ip} {port} > /dev/null 2>&1")  #linuxif result == 0:  print(f"端口 {port} 是开放的")  else:  print(f"端口 {port} 是关闭的")if __name__ == '__main__':ret = check_port('127.0.0.1', 80)print("80: ", ret)# ret = check_port('127.0.0.1', 8000)# print("8000: ", ret)

在这里插入图片描述

3.4 nc命令

nc -zv <IP地址> <端口>
import os  def check_port(ip, port):  result = os.system(f"nc -zv {ip} {port} > /dev/null 2>&1") if result == 0:  print(f"端口 {port} 是开放的")  else:  print(f"端口 {port} 是关闭的")if __name__ == '__main__':# ret = check_port('127.0.0.1', 80)# print("80: ", ret)ret = check_port('127.0.0.1', 8000)print("8000: ", ret)

3.5 ping命令

ping <IP地址> -n <端口>
import os  def check_port(ip, port):  # result = os.system(f"ping {ip} -n {port} > /dev/null 2>&1")  result = os.system(f"ping {ip} -n {port} ")  if result == 0:  print(f"端口 {port} 是开放的")  else:  print(f"端口 {port} 是关闭的")if __name__ == '__main__':# ret = check_port('127.0.0.1', 80)# print("80: ", ret)ret = check_port('127.0.0.1', 8000)print("8000: ", ret)

在这里插入图片描述

3.6 requests检查http端口

import requests  def check_port(ip, port):  try:  response = requests.get(f"http://{ip}:{port}")  if response.status_code == 200:  print(f"端口 {port} 是开放的")  else:  print(f"端口 {port} 是关闭的")  except requests.exceptions.ConnectionError:  print(f"端口 {port} 是关闭的")if __name__ == '__main__':# ret = check_port('127.0.0.1', 80)# print("80: ", ret)ret = check_port('127.0.0.1', 8000)print("8000: ", ret)

在这里插入图片描述

3.7 Scapy库

Scapy是一个由Python编写的强大工具,目前很多优秀的网络扫描攻击工具都使用了这个模块。也可以在自己的程序中使用这个模块来实现对网络数据包的发送、监听和解析。这个模块相对于Nmap来说,更为底层。可以更直观的了解网络中的各类扫描攻击行为。

Scapy是一个 Python程序,它允许用户发送、嗅探、分析和伪造网络包。这种能力允许构建能够探测、扫描或攻击网络的工具。

Scapy是一个强大的交互式包操作程序。它能够伪造或解码大量协议的数据包,在网络上发送它们,捕获它们,匹配请求和响应,等等。Scapy可以轻松地处理大多数经典任务,如扫描、跟踪、探测、单元测试、攻击或网络发现。它可以代替hping、arpsoof、arp-sk、arping、p0f甚至Nmap、tcpdump和tshark的某些部分。

  • 安装Scapy库
pip install scapy

在这里插入图片描述

  • 代码测试
from scapy.all import *  def check_port(ip, port):  # 构造一个ICMP数据包,并发送到目标IP地址和端口  packet = IP(dst=ip) / ICMP() / Raw(load=str(port))  # 发送数据包并获取响应  response = sr1(packet, timeout=1)  # 检查响应是否为ICMP错误类型  if response is None or response.type != ICMP.DEST_UNREACH:  print(f"端口 {port} 是开放的")  else:  print(f"端口 {port} 是关闭的")if __name__ == '__main__':# ret = check_port('127.0.0.1', 80)# print("80: ", ret)ret = check_port('127.0.0.1', 8000)print("8000: ", ret)

在这里插入图片描述
运行报错了,哈哈哈哈哈,等热心小伙伴告诉俺解决方法。

结语

如果您觉得该方法或代码有一点点用处,可以给作者点个赞,或打赏杯咖啡;╮( ̄▽ ̄)╭
如果您感觉方法或代码不咋地//(ㄒoㄒ)//,就在评论处留言,作者继续改进;o_O???
如果您需要相关功能的代码定制化开发,可以留言私信作者;(✿◡‿◡)
感谢各位大佬童鞋们的支持!( ´ ▽´ )ノ ( ´ ▽´)っ!!!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/145272.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

数据链路层 MTU 对 IP 协议的影响

在介绍主要内容之前&#xff0c;我们先来了解一下数据链路层中的"以太网" 。 “以太网”不是一种具体的网络&#xff0c;而是一种技术标准&#xff1b;既包含了数据链路层的内容&#xff0c;也包含了一些物理层的内容。 下面我们再来了解一下以太网数据帧&#xff…

[Machine learning][Part3] numpy 矢量矩阵操作的基础知识

很久不接触数学了&#xff0c;machine learning需要用到一些数学知识&#xff0c;这里在重温一下相关的数学基础知识 矢量 矢量是有序的数字数组。在表示法中&#xff0c;矢量用小写粗体字母表示。矢量的元素都是相同的类型。例如&#xff0c;矢量不包含字符和数字。数组中元…

Android Jetpack组件架构:ViewModel的原理

Android Jetpack组件架构&#xff1a;ViewModel的原理 导言 本篇文章是关于介绍ViewModel的&#xff0c;由于ViewModel的使用还是挺简单的&#xff0c;这里就不再介绍其的基本应用&#xff0c;我们主要来分析ViewModel的原理。 ViewModel的生命周期 众所周知&#xff0c;一般…

字节一面:深拷贝浅拷贝的区别?如何实现一个深拷贝?

前言 最近博主在字节面试中遇到这样一个面试题&#xff0c;这个问题也是前端面试的高频问题&#xff0c;我们经常需要对后端返回的数据进行处理才能渲染到页面上&#xff0c;一般我们会讲数据进行拷贝&#xff0c;在副本对象里进行处理&#xff0c;以免玷污原始数据&#xff0c…

力扣 -- 10. 正则表达式匹配

解题步骤&#xff1a; 参考代码&#xff1a; class Solution { public:bool isMatch(string s, string p) {int ms.size();int np.size();//处理后续映射关系s s;//处理后续映射关系p p;vector<vector<bool>> dp(m1,vector<bool>(n1));//初始化dp[0][0]true…

支付宝支付模块开发

生成二维码 使用Hutool工具类生成二维码 引入对应的依赖 <dependency><groupId>cn.hutool</groupId><artifactId>hutool-all</artifactId><version>5.7.5</version> </dependency><dependency><groupId>com.go…

公司知识库搭建步骤,知识库建设与运营的四个步骤分享

在知识管理方面&#xff0c;团队中的每一员&#xff0c;都像是一名独行侠&#xff0c;自己的知识&#xff0c;满足自己的需要&#xff0c;这其中&#xff0c;就造成了很多无意义的精力消耗。 公司知识库搭建必要性 比如&#xff0c;一名员工撰写一QA文档&#xff0c;并没有将它…

国庆《乡村振兴战略下传统村落文化旅游设计》许少辉八一新书行将售罄

国庆《乡村振兴战略下传统村落文化旅游设计》许少辉八一新书行将售罄 国庆《乡村振兴战略下传统村落文化旅游设计》许少辉八一新书行将售罄

【CUDA编程概念】一、什么是bank conflict?

前言 搜了不少答案&#xff0c;大多是在避免Bank Conflict&#xff0c;很难找到一个关于Bank Conflict的详细定义&#xff0c;这里找了些资料来尝试解释下&#xff1b; 一、基础概念 先简单复习下相关概念 GPU调度执行流程&#xff1a; SM调度单位为一个warp&#xff08;一…

Linux:修改mvn命令使用的maven路径

要在 Linux 上更改 Maven 的版本&#xff0c;需要调整 PATH 环境变量以指向所需版本的 Maven 安装目录。 打开终端或命令行界面。 使用文本编辑器打开 /etc/profile 文件&#xff1a; vi /etc/profile在文件的末尾添加以下行&#xff0c;将 PATH 环境变量指向新的 Maven 安装目…

4项简化IT服务台任务的ChatGPT功能

近几个月&#xff0c;随着人工智能聊天机器人 ChatGPT 风靡全球&#xff0c;用户可以通过它生成脚本、文章、运动计划表等。同时&#xff0c;这项技术在各行各业都能够进行无穷无尽的应用&#xff0c;在本文中&#xff0c;我们将探讨这项现代技术如何帮助ITSM团队提升服务交付和…

面试题六:Promise的使用,一文详细讲解

含义 Promise是异步编程的一种解决方案&#xff0c;比传统的解决方案&#xff08;回调函数和事件&#xff09;更合理更强大。 所谓Promise&#xff0c;简单说就是一个容器&#xff0c;里面保存着某个未来才会结束的事件 (通常是一个异步操作)的结果。从语法上说&#xff0c;P…

【JavaEE初阶】 计算机是如何工作的

文章目录 &#x1f332;计算机发展史&#x1f38b;冯诺依曼体系&#xff08;Von Neumann Architecture&#xff09;&#x1f38d;CPU 基本工作流程&#x1f4cc;逻辑门&#x1f388;电子开关 —— 机械继电器(Mechanical Relay)&#x1f388;门电路(Gate Circuit)NOT GATE&…

ElasticSearch深度分页解决方案

文章目录 概要ElasticSearch介绍es分页方法es分页性能对比表方案对比 From/Size参数深度分页问题Scroll#性能对比向前翻页 总结个人思考 概要 好久没更新文章了&#xff0c;最近研究了一下es的深分页解决方案。和大家分享一下&#xff0c;祝大家国庆节快乐。 ElasticSearch介…

windows下python开发环境的搭建 python入门系列 【环境搭建篇】

在正式学习Python之前要先搭建Python开发环境。由于Python是跨平台的&#xff0c;所以可以在多个操作系统上进行编程 一、python的下载安装与配置 1、Python解释器 1. 要进行Python开发&#xff0c;首先需要Python解释器&#xff0c;这里说的安装Python就是安装Python解释器…

利用mAP计算yolo精确度

当将yolo算法移植部署在嵌入式设备上&#xff0c;为了验证算法的准确率。将模型测试的结果保存为txt文件&#xff08;每一个txt文件&#xff0c;对应一个图片&#xff09;。此外&#xff0c;需要将数据集中的标签由[x,y,w,h]转为[x1,y1,x2,y2]。最后&#xff0c;运行验证代码 …

极简非凡react hooks+arcoDesign+vite后台管理模板

最近捣鼓了一个vite4搭建react18后台模板&#xff0c;搭载了字节团队react组件库Arco Design&#xff0c;整体编译运行顺滑衔接。支持多种模板布局、暗黑/亮色模式、国际化、权限验证、多级路由菜单、tabview标签栏快捷菜单、全屏控制等功能。 使用技术 "arco-design/web…

如何写一份完整的职业规划书?

写职业规划书&#xff0c;确定今后几年的一个发展方向&#xff08;职业规划建议越早越好&#xff09;&#xff0c;帮助自己收获更大的成功。普通的职业规划书书写起来十分简单&#xff0c;没有想象中那样复杂&#xff0c;只需要包括基本的部分&#xff0c;就可以轻轻松松完成。…

【面试经典150 | 数组】除自身以外数组的乘积

文章目录 写在前面Tag题目来源题目解读解题思路方法一&#xff1a;记录左右乘积空间优化 写在最后 写在前面 本专栏专注于分析与讲解【面试经典150】算法&#xff0c;两到三天更新一篇文章&#xff0c;欢迎催更…… 专栏内容以分析题目为主&#xff0c;并附带一些对于本题涉及到…

从 低信噪比陆上地震记录 解决办法收集 到 走时层析反演中的折射层析调研

目录 (前言1) 关于背景的回答:(前言2) 现有的降低噪声, 提高信噪比的一些特有方法的论文资料 (传统策略):1. 关于波形反演与走时层析反演2. 折射层析3. 用一个合成数据来解释折射层析反演的思路4. 其他层析反演方法:5. 关于层析反演的一些TIPS (可补充)参考文献: 降噪有关资料参…