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

这篇具有很好参考价值的文章主要介绍了【夏虫语冰】测试服务器端口是否打开(命令行、Python)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1、简介

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

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

测试端口是否开放,Python,夏虫语冰,python,linux,scapy,ssh,wget,curl,nmap

2、命令行

2.1 telnet

2.1.1 工具简介

Telnet协议是TCP/IP协议族中的一员,是Internet远程登录服务的标准协议和主要方式。它为用户提供了在本地计算机上完成远程主机工作的能力。telnet是基于tcp/ip协议的,因此只能用于检测tcp的端口是否开放。
测试端口是否开放,Python,夏虫语冰,python,linux,scapy,ssh,wget,curl,nmap
测试端口是否开放,Python,夏虫语冰,python,linux,scapy,ssh,wget,curl,nmap

2.1.2 工具配置

telnet ip port

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

telnet

测试端口是否开放,Python,夏虫语冰,python,linux,scapy,ssh,wget,curl,nmap
发现telnet命令没有找到。如果提示“不是内部或外部命令”则需要在“程序和功能”中开启telnet。
需要配置一下。在控制面板中选择“程序和功能”,在“程序和功能”界面选择“打开或关闭Windows功能”。在弹出的“windows功能”窗口中将Telnet服务器和Telnet客户端勾选并保存设置。设置完成后需要重新打开一个命令行窗口运行telnet命令,设置前打开的命令窗口运行telnet是无效的。具体步骤如下:
测试端口是否开放,Python,夏虫语冰,python,linux,scapy,ssh,wget,curl,nmap
控制面板——程序——启动或关闭windows功能——勾上telnet client。
测试端口是否开放,Python,夏虫语冰,python,linux,scapy,ssh,wget,curl,nmap
测试端口是否开放,Python,夏虫语冰,python,linux,scapy,ssh,wget,curl,nmap

2.1.3 工具使用

然后再测试一下telnet命令.

telnet

测试端口是否开放,Python,夏虫语冰,python,linux,scapy,ssh,wget,curl,nmap
说明配置成功。
我们再试试测试一下一个不存在的端口。

telnet 127.0.0.1 80

测试端口是否开放,Python,夏虫语冰,python,linux,scapy,ssh,wget,curl,nmap
提示报错了。
我们再试试测试一下百度。

telnet www.baidu.com 80

测试端口是否开放,Python,夏虫语冰,python,linux,scapy,ssh,wget,curl,nmap
在CMD命令框中输入 “telnet IP地址或者域名 端口号”,如果弹出黑色窗体,表示连接成功。
接着操作如下:

ctrl+]
st

测试端口是否开放,Python,夏虫语冰,python,linux,scapy,ssh,wget,curl,nmap

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
    测试端口是否开放,Python,夏虫语冰,python,linux,scapy,ssh,wget,curl,nmap

2.2.1 工具使用

curl ip:port

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

curl www.baidu.com

测试端口是否开放,Python,夏虫语冰,python,linux,scapy,ssh,wget,curl,nmap

curl 127.0.0.1
# or
curl 127.0.0.1:5000

测试端口是否开放,Python,夏虫语冰,python,linux,scapy,ssh,wget,curl,nmap

2.3 wget

2.3.1 工具简介

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

2.3.2 工具下载

https://eternallybored.org/misc/wget/
测试端口是否开放,Python,夏虫语冰,python,linux,scapy,ssh,wget,curl,nmap

2.3.2 工具使用

wget ip:port
# or
wget localhost:5000

测试端口是否开放,Python,夏虫语冰,python,linux,scapy,ssh,wget,curl,nmap

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

测试端口是否开放,Python,夏虫语冰,python,linux,scapy,ssh,wget,curl,nmap

2.5 ssh

2.5.1 工具简介

SSH(Secure Shell,安全外壳)是一种网络安全协议,通过加密和认证机制实现安全的访问和文件传输等业务。
测试端口是否开放,Python,夏虫语冰,python,linux,scapy,ssh,wget,curl,nmap

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

    • SSH协议通过对网络数据进行加密和验证,在不安全的网络环境中提供了安全的网络服务。作为Telnet和其他不安全远程shell协议的安全替代方案,目前SSH协议已经被全世界广泛使用,大多数设备都支持SSH功能。
      测试端口是否开放,Python,夏虫语冰,python,linux,scapy,ssh,wget,curl,nmap

  • 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
    测试端口是否开放,Python,夏虫语冰,python,linux,scapy,ssh,wget,curl,nmap
  • linux
    测试端口是否开放,Python,夏虫语冰,python,linux,scapy,ssh,wget,curl,nmap

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

测试端口是否开放,Python,夏虫语冰,python,linux,scapy,ssh,wget,curl,nmap

2.6.2 工具使用

nmap 127.0.0.1 -p 80

测试端口是否开放,Python,夏虫语冰,python,linux,scapy,ssh,wget,curl,nmap
检测端口成功!!!

nmap 127.0.0.1 -p 8080

测试端口是否开放,Python,夏虫语冰,python,linux,scapy,ssh,wget,curl,nmap
检测端口失败!!!

查看当前开放的端口: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 socket

def 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 True
        else:  
            return False
    except Exception as e:  
        print(f"错误: {str(e)}")  
    finally:  
        sock.close()

if __name__ == '__main__':      
    host = 'localhost'
    port = 8000
    if check_port(host, port):
        print(f'The port {port} on {host} is open.')
    else:
        print(f'The port {port} on {host} is closed.')

执行结果如下:
测试端口是否开放,Python,夏虫语冰,python,linux,scapy,ssh,wget,curl,nmap

3.2 sock.connect

import socket

def check_port(host, port):
    try:
        sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
        sock.settimeout(1)
        sock.connect((host, port))
        sock.close()
        return True
    except:
        return False
    finally:  
        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)

测试端口是否开放,Python,夏虫语冰,python,linux,scapy,ssh,wget,curl,nmap

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")  #linux
    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)

测试端口是否开放,Python,夏虫语冰,python,linux,scapy,ssh,wget,curl,nmap

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)

测试端口是否开放,Python,夏虫语冰,python,linux,scapy,ssh,wget,curl,nmap

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)

测试端口是否开放,Python,夏虫语冰,python,linux,scapy,ssh,wget,curl,nmap

3.7 Scapy库

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

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

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

  • 安装Scapy库
pip install scapy

测试端口是否开放,Python,夏虫语冰,python,linux,scapy,ssh,wget,curl,nmap

  • 代码测试
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)

测试端口是否开放,Python,夏虫语冰,python,linux,scapy,ssh,wget,curl,nmap
运行报错了,哈哈哈哈哈,等热心小伙伴告诉俺解决方法。

结语

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

到了这里,关于【夏虫语冰】测试服务器端口是否打开(命令行、Python)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 服务器GPU性能测试流程

    注意: 1、cuda-sample需要和cuda版本对应,否则会报错 2、只有进行hpcg测试时才需要设置当前环境变量为cuda-10,其它测试时设置cuda-12.0,否则在进行浮点性能测试时会报错 1.环境变量要求cuda11.8 2.cuda-samples-11.8测试包 3.hpcg测试环境 4.intel oneAPI安装 1.显存带宽 2.卡间带宽 3.浮点性

    2024年02月04日
    浏览(52)
  • 终端、服务器性能测试工具

    本人之前的一段时间测试了许多信创的终端和服务器,在进行性能测试时使用了许多测试工具,也遇到了一些问题。这些测试工具在网上都可以搜到详细的教程,我想借助这边文章将诸多测试工具的测试步骤整合一下,方便部分需要用到这些工具测试的人员查看。当然你可能

    2024年02月19日
    浏览(74)
  • linux服务器如何测试网速

    说到测网速我相信很多小伙伴都知道在自己的电脑上操作,但我们平时用的比较多的系统还是Windows系统,那么到了linux系统上你知道怎么测网速吗? 今天还是艾西的服务器小知识跟大家讲讲在linux系统上怎么测网速,在我们自己家里的其实还好,有时对于网络的速度没有那么

    2024年02月12日
    浏览(35)
  • 服务器使用UDP通讯127.0.0.1测试成功连接服务器却通讯失败

    首先看看本人情况 解释一下: 1:左边窗口是模拟服务程序,功能是收到消息后把消息打印出来,并把收到的消息再发回给发送消息的主机 2:右边窗口是模拟客户程序,功能是将输入的消息发送给服务程序的主机,并将接收的消息打印出来 3:程序均采用的是UDP网络通讯 问

    2024年02月16日
    浏览(39)
  • 【6】测试项程序编写(ARM服务器)

          这一章节我们将针对接口测试、压力测试等进行测试项程序的编写,这一节是本专栏算是最重要的一部分了,其实编写测试项程序说简单也简单,说难也有难点,需要细心一点,然后,我会通过实例讲解来说明各个需要注意的点。 1.python 3.7.8   可直接进入官网下载安

    2024年01月22日
    浏览(36)
  • 服务器测试之系统下更新固件汇总

    常见服务器机型更新固件,修改配置操作详解 注:Inspur/Sugon/H3C服务器,BIOS刷新工具都是afulnx,BIOS修改工具都是SCELNX; BMC配置包括NTP/LDAP/SNMP内容 R730xd BIOS刷新: a)系统下执行./BIOS_R6HXJ_LN_2.6.4.BIN b)按q继续升级 c)输入y继续 d)输入y执行reboot BMC刷新: 系统下执行./iDRAC-wi

    2024年02月09日
    浏览(38)
  • 性能测试分析案例-定位服务器丢包

    预先安装 docker、curl、hping3 等工具,如 apt install docker.io curl hping3。 案例是一个 Nginx 应用,如下图所示,hping3 和 curl 是 Nginx 的客户端。 在终端一中执行下面的命令,启动 Nginx 应用,并在 80 端口监听。如果一切正常,你应该可以看到如下的输出: 执行 docker ps 命令,查询容

    2024年02月01日
    浏览(44)
  • Jmeter如何进行多服务器远程测试

    🍅 视频学习: 文末有免费的配套视频可观看 🍅 关注公众号【互联网杂货铺】,回复 1 , 免费获取软件测试全套资料,资料在手,涨薪更快 JMeter是Apache软件基金会的开源项目,主要来做功能和性能测试,用Java编写。 我们一般都会用JMeter在本地进行测试,但是受到单个电

    2024年04月26日
    浏览(41)
  • Linux服务器测试端口连通性方法汇总

    1. Linux服务器测试端口连通性方法汇总 在 Linux 系统下,有多种方法可以测试端口是否通畅。以下是几种常用的方法: 使用 Telnet 命令: 打开终端。 输入 telnet 主机名或IP地址 端口号 。例如, telnet example.com 80 。 如果端口通畅,终端会显示连接成功的消息;如果端口不通,会

    2024年02月11日
    浏览(34)
  • 微信小程序请求本地服务器测试成功

    在测试阶段,微信小程序是可以请求本地服务器的,这里有如下好处: 1.测试不需要经过网络,暂时可以不配置域名等,服务器也不用上线 2.可以看到小程序和服务器的打印,方便调试和找出问题 3.服务器不用频繁修改上架,更改非常方便 1.勾选上不检测域名: 2.修改请求网

    2024年02月10日
    浏览(67)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包