【夏虫语冰】测试服务器端口是否打开(命令行、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.xdnf.cn/news/146350.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

动态规划算法(1)--矩阵连乘和凸多边形剖分

目录 一、动态数组 1、创建动态数组 2、添加元素 3、删除修改元素 4、访问元素 5、返回数组长度 6、for each遍历数组 二、输入多个数字 1、正则表达式 2、has.next()方法 三、矩阵连乘 1、什么是矩阵连乘&#xff1f; 2、动态规划思路 3、手推m和s矩阵 4、完…

番外4:VMware安装

step4: 安装过程中&#xff0c;有些选项不需要点&#xff08;安装地址建议选C盘或默认&#xff0c;装载在其他盘后续会报错&#xff09;&#xff0c;如&#xff1a; may error&#xff08;本人猜测安装虚拟机完整版需要C盘的一些桥插件支持&#xff09;: step5: 安装虚拟机成功…

给奶牛做直播之三

​一、前言 上一篇给牛奶做直播之二 主要讲用RTMP搭建点播服务器&#xff0c;整了半天直播还没上场&#xff0c;今天不讲太多理论的玩意&#xff0c;奶牛今天放假了也不出场&#xff0c;就由本人亲自上场来个直播首秀&#xff0c;见下图&#xff0c;如果有兴趣的话&#xff0…

Android修行手册 - Activity 在 Java 和 Kotlin 中怎么写构造参数

点击跳转>Unity3D特效百例点击跳转>案例项目实战源码点击跳转>游戏脚本-辅助自动化点击跳转>Android控件全解手册点击跳转>Scratch编程案例点击跳转>软考全系列 &#x1f449;关于作者 专注于Android/Unity和各种游戏开发技巧&#xff0c;以及各种资源分享&…

大喜国庆,聊聊我正式进入职场的这三个月...

个人简介 &#x1f440;个人主页&#xff1a; 前端杂货铺 &#x1f64b;‍♂️学习方向&#xff1a; 主攻前端方向&#xff0c;正逐渐往全干发展 &#x1f4c3;个人状态&#xff1a; 研发工程师&#xff0c;现效力于中国工业软件事业 &#x1f680;人生格言&#xff1a; 积跬步…

实现三栏布局的十种方式

本文节选自我的博客&#xff1a;实现三栏布局的十种方式 &#x1f496; 作者简介&#xff1a;大家好&#xff0c;我是MilesChen&#xff0c;偏前端的全栈开发者。&#x1f4dd; CSDN主页&#xff1a;爱吃糖的猫&#x1f525;&#x1f4e3; 我的博客&#xff1a;爱吃糖的猫&…

02-Zookeeper实战

上一篇&#xff1a;01-Zookeeper特性与节点数据类型详解 1. zookeeper安装 Step1&#xff1a; 配置JAVA环境&#xff0c;检验环境&#xff1a; java -versionStep2: 下载解压 zookeeper wget https://mirror.bit.edu.cn/apache/zookeeper/zookeeper-3.5.8/apache-zookeepe…

番外5:下载+安装+配置Linux

任务前期工作&#xff1a; 01. 电脑已安装好VMware Workstation软件&#xff1b; 02.提前下载好Rhel-8.iso映像文件&#xff08;文件较大一般在9.4GB&#xff0c;建议采用迅雷下载&#xff09;&#xff0c;本人使用的以下版本&#xff08;地址ed2k://|file|rhel-8.4-x86_64-dvd…

C++-哈希Hash

本期我们来学习哈希 目录 unordered系列关联式容器 unordered_map unordered_set 性能比较 哈希概念 哈希冲突 哈希函数 哈希冲突解决 闭散列 模拟实现 开散列 模拟实现 全部代码 unordered系列关联式容器 在 C98 中&#xff0c; STL 提供了底层为红黑树结构的一…

【算法基础】一文掌握十大排序算法,冒泡排序、插入排序、选择排序、归并排序、计数排序、基数排序、希尔排序和堆排序

目录 1 冒泡排序&#xff08;Bubble Sort&#xff09; 2 插入排序&#xff08;Insertion Sort&#xff09; 3 选择排序&#xff08;Selection Sort&#xff09; 4. 快速排序&#xff08;Quick Sort&#xff09; 5. 归并排序&#xff08;Merge Sort&#xff09; 6 堆排序 …

【day10.01】使用select实现服务器并发

用select实现服务器并发&#xff1a; linuxlinux:~/study/1001$ cat server.c #include <myhead.h>#define ERR_MSG(msg) do{\printf("%d\n",__LINE__);\perror(msg);\ }while(0)#define PORT 8880#define IP "192.168.31.38"int main(int argc, c…

11链表-迭代与递归

目录 LeetCode之路——206. 反转链表 分析&#xff1a; 解法一&#xff1a;迭代 解法二&#xff1a;递归 LeetCode之路——206. 反转链表 给你单链表的头节点 head &#xff0c;请你反转链表&#xff0c;并返回反转后的链表。 示例 1&#xff1a; 输入&#xff1a;head […

开绕组电机零序Bakc EMF-based无感控制以及正交锁相环inverse Park-based

前言 最近看论文遇到了基于反Park变换的锁相环&#xff0c;用于从开绕组永磁同步电机零序电压信号中提取转子速度与位置信息&#xff0c;实现无感控制。在此记录 基于零序Back EMF的转子估算 开绕组电机的零序反电动势 e 0 − 3 ω e ψ 0 s i n 3 θ e e_0-3\omega_e\psi_…

SoloX:Android和iOS性能数据的实时采集工具

SoloX&#xff1a;Android和iOS性能数据的实时采集工具 github地址&#xff1a;https://github.com/smart-test-ti/SoloX 最新版本&#xff1a;V2.7.6 一、SoloX简介 SoloX是开源的Android/iOS性能数据的实时采集工具&#xff0c;目前主要功能特点&#xff1a; 无需ROOT/越狱…

直播协议 python 常见直播协议

1. 推流、直播 和 点播分别是什么意思&#xff1f; 推流 主播将本地视频源和音频源推送到云服务器&#xff0c;也被称为“RTMP发布”。 直播 即直接观看主播实时推送过来的音视频数据。 点播 视频源已经事先存储于云服务器之上的音视频文件&#xff0c;观众随时可以观看。 目…

STM32晶振的选择与计算

目录 1、石英晶体特性和型号2、振荡器理论2.1负电阻2.2跨导2.3负阻振荡器原理 3、皮尔斯振荡器设计3.1 皮尔斯振荡器简介3.2反馈电阻器3.3负载电容3.4振荡器跨导3.5驱动电平和外部电阻计算3.5.1计算驱动电平3.5.2另一种驱动电平测量方法3.5.3计算外部电阻 3.6启动时间3.7晶体拉…

八个不可不知的SQL高级方法

结构化查询语言&#xff08;SQL&#xff09;是一种广泛使用的工具&#xff0c;用于管理和操作数据库。基本的SQL查询简单易学&#xff0c;但掌握高级SQL技术可以将您的数据分析和管理能力提升到新的高度。 高级SQL技术是指一系列功能和函数&#xff0c;使您能够对数据执行复杂…

记录:Unity脚本的编写

目录 前言添加脚本到unity编写c#脚本查看效果 前言 在学习软件构造这门课的时候&#xff0c;对unity和c#进行了 一定程度的学习&#xff0c;包括简单的建立地形&#xff0c;添加对象&#xff0c;添加材质等&#xff0c;前不久刚好学习了如何通过c#脚本对模型进行操控&#xff…

uniapp - 微信小程序实现腾讯地图位置标点展示,将指定地点进行标记选点并以一个图片图标展示出来(详细示例源码,一键复制开箱即用)

效果图 在uniapp微信小程序平台端开发,简单快速的实现在地图上进行位置标点功能,使用腾讯地图并进行标点创建和设置(可以自定义标记点的图片)。 你只需要复制代码,改个标记图标和位置即可。

Fiddler Orchestra用户指南:打造高效协同调试利器

引言&#xff1a;今天Fiddler更新到5.0版本后&#xff0c;小酋不经意间晃到了“Fiddler Orchestra”选项卡。爱折腾的小酋赶紧链接到官方用户指南一睹为快&#xff0c;看看这是什么东西&#xff0c;实现了什么新功能。下面是小酋看后做的一个翻译抢先版。 这是了解和设置Fiddl…