Python批量检测服务器端口可用性与Socket函数使用

Python批量检测服务器端口可用性与Socket函数使用! 谁是最可怜的人 今天中午睡觉感觉有点晃,还以为是地震了,吓了一跳。睡醒了鬼使神差的突然在想,如果地震房子塌了,还要不要还贷款啊?结果手机查了一下,瞬间就觉得要崩溃了,即便房子没了都还要继续还款…谁是最可怜的人,穷人。 Python资源共享群:626017123 这几天公司有些忙,主要是涉及Python的Linux下脚本开发问题。其中涉及到针对服务器及端口的检测工... 阅读详情
谁是最可怜的人

今天中午睡觉感觉有点晃,还以为是地震了,吓了一跳。睡醒了鬼使神差的突然在想,如果地震房子塌了,还要不要还贷款啊?结果手机查了一下,瞬间就觉得要崩溃了,即便房子没了都还要继续还款...谁是最可怜的人,穷人。


5847426-372036cc97d25c98.png
房贷还款

这几天公司有些忙,主要是涉及Python的Linux下脚本开发问题。其中涉及到针对服务器及端口的检测工作,所以今天和大家聊聊使用Python检测服务器与端口可用性的问题。

socket函数
简述

socket又称套间字或者插口,是网络通信中必不可少的工具。有道是:“无socket,不网络”。由于socket最早在BSD Unix上使用,而Unix/Linux所奉为经典的至高哲学是“一切皆是文件”。因此socket在使用时也是完全符合这个哲学的,它涉及到listen()、bind()、accept()、write()/read()、close()等基本的类似于文件操作的功能函数。

socket用法
import socket
socket.socket(socket_family,socket_type,protocal=0)
#socket_family 可以是 AF_UNIX 或 AF_INET。socket_type 可以是 SOCK_STREAM 或 SOCK_DGRAM。protocol 一般不填,默认值为 0。

#获取tcp/ip套接字
tcpSock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

#获取udp/ip套接字
udpSock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)

#由于 socket 模块中有太多的属性。我们在这里破例使用了'from module import *'语句。使用 'from socket import *',我们就把 socket 模块里的所有属性都带到我们的命名空间里了,这样能 大幅减短我们的代码。
#例如tcpSock = socket(AF_INET, SOCK_STREAM)
服务端套接字

s.bind() #绑定(主机,端口号)到套接字
s.listen() #开始TCP监听
s.accept() #被动接受TCP客户的连接,(阻塞式)等待连接的到来

客户端套接字

s.connect() #主动初始化TCP服务器连接
s.connect_ex() #connect()函数的扩展版本,出错时返回出错码,而不是抛出异常

公共用途套接字

s.recv() #接收TCP数据
s.send() #发送TCP数据(send在待发送数据量大于己端缓存区剩余空间时,数据丢失,不会发完)
s.sendall() #发送完整的TCP数据(本质就是循环调用send,sendall在待发送数据量大于己端缓存区剩余空间时,数据不丢失,循环调用send直到发完)
s.recvfrom() #接收UDP数据
s.sendto() #发送UDP数据
s.getpeername() #连接到当前套接字的远端的地址
s.getsockname() #当前套接字的地址
s.getsockopt() #返回指定套接字的参数
s.setsockopt() #设置指定套接字的参数
s.close() #关闭套接字

面向锁的套接字

s.setblocking() #设置套接字的阻塞与非阻塞模式
s.settimeout() #设置阻塞套接字操作的超时时间
s.gettimeout() #得到阻塞套接字操作的超时时间

Python检测端口

上面介绍了socket的一些基础信息,那么需求是什么?批量检测服务器、端口,是否被占用...
听起来比较简单,起初也是这么认为的。但socket的坑确实不少啊!

连接方式

上面提到了s.connect()与s.connect_ex(),更推荐使用s.connect_ex(),而非使用主动连接的s.connect()获取异常方式。
这样我们可以通过异常码更方便的进行判断操作。基础操作:

# -*- coding: utf-8 -*-
# @Author   : 王翔
# @JianShu  : 清风Python
# @Date     : 2019/8/27 1:26
# @Software : PyCharm
# @version  :Python 3.7.3
# @File     : IpPortCheck.py

import socket
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
result = s.connect_ex(('127.0.0.1', 80))
print(result)
快速检测

当我们了解了基础操作后,可以进行下一步的检测工作,但此时我们忽略了一个问题,刚才我们检测的是本机的ip,但如果我们检测的是一个不存在的ip时会出现什么问题?
如果我们使用connect方法触发异常,并返回:

TimeoutError: [WinError 10060]
由于连接方在一段时间后没有正确答复或连接的主机没有反应,连接尝试失败。

如果我们使用connect_ex,则打印返回码10060。
但两者都存在一个问题,就是超时时间会等待很久。那么如何操作?一般的网络监测,设置3秒的时间就够了,所以添加s.settimeout(3)配置即可,当超时后,会引发socket.timeout: timed out异常,使用connect_ex则返回10035的状态码。

关于异常报错

TimeoutError: [WinError 10060] 由于连接方在一段时间后没有正确答复或连接的主机没有反应,连接尝试失败。
ConnectionRefusedError: [WinError 10061] 由于目标计算机积极拒绝,无法连接。

完整判断代码
# -*- coding: utf-8 -*-
# @Author   : 王翔
# @JianShu  : 清风Python
# @Date     : 2019/8/27 1:26
# @Software : PyCharm
# @version  :Python 3.7.3
# @File     : IpPortCheck.py

import socket

IPs = ['127.0.0.1', '10.45.226.74']
Ports = [22, 80, 8080]

for ip in IPs:
    for port in Ports:
        s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
        s.settimeout(3)
        result = s.connect_ex((ip, port))
        if result == 0:
            print("The Server IP: {} , Port {} has been used".format(ip, port))
        elif result == 10061:
            print("The Server IP: {} , Port {} not enabled".format(ip, port))
        elif result == 10035:
            print("The Server IP: {} , no response".format(ip, port))
        else:
            print(result)
        s.close()

output:
The Server IP: 127.0.0.1 , Port 22 not enabled
The Server IP: 127.0.0.1 , Port 80 has been used
The Server IP: 127.0.0.1 , Port 8080 not enabled
The Server IP: 10.45.226.74 , no response
The Server IP: 10.45.226.74 , no response
The Server IP: 10.45.226.74 , no response
The End

OK,今天的内容就到这里,如果觉得内容对你有所帮助,欢迎点击文章右下角的“在看”。
期待你关注我的公众号清风Python,如果觉得不错,希望能动动手指转发给你身边的朋友们。
希望每周一至五清晨的7点10分,都能让清风Python的知识文章叫醒大家!谢谢……

5847426-612ae1f58118218c.png
清风Python

python socket 多线程实现 近期需要用到socket协议进行hilenskit与ubuntu系统进行信息传输,同时需要用到多线程保证主线程不受到影响。 主要内容包括socket语法、python多线程 python socket基本语法 socket.socket([family[, type[, proto]]]) 通过该函数创建一个socket类 family包括AF_UNIX或者AF_INET,常用AF_INET 服务器端socket创建 HOST = '' # 不输入为默认本地地址,需要通信的时候统一地址 PORT = 77 阅读详情

相关推荐

从仿真到部署:基于ROS2与Gazebo的UR5e机械臂全流程控制实践

本文详细介绍了基于ROS2与Gazebo的UR5e机械臂全流程控制实践,从环境准备、模型构建到控制器开发和仿真优化,最终实现真实机器人部署。通过实战案例和避坑指南,帮助开发者掌握机器人仿真与控制的关键技术,提升UR5e机械臂在物料分拣等任务中的性能与稳定性。

weixin_29184371的博客 288

python下socket编程之TCP连接状态

1. 引言 python作为一门胶水语言,可以在各个领域上作为快速开发的工具,大大提高开发者处理事务的效率。在互联网行业中,不管是对网络服务器的开发,还是对网络客户端,例如爬虫的开发中,都会涉及到底层的运行原理,那就是socket编程,那么今天,我们将对python下的socket编程开发中,TCP协议中连接状态做一个介绍,通过本篇文章,可以让大家对网络编程中底层的TCP协议的连接有一定的认识。...

ITsource 2万+

CH582低功耗实战:从1.2mA降到5uA,我的蓝牙广播功耗优化笔记

本文详细记录了沁恒CH582蓝牙芯片从1.2mA降至5μA的功耗优化全过程。通过建立基准测试环境、分层排查软件配置与IO状态、精细调优射频参数以及硬件层面的电源管理,实现了极致的低功耗表现。文章还提供了实用的功耗测量方法和典型问题排查指南,为蓝牙设备开发者提供了宝贵的参考经验。

weixin_30368405的博客 572

python脚本批量检测端口连通性

python 脚本批量检测端口连通性前言脚本命令行执行返回结果 前言 测试连通性的工具有很多,比如telnet,nc,netcat等等。但telnet检测一些超时的连接时会变成交互式,影响批量脚本书写,而nc和netcat等工具又由于一些限制,并不是每一台服务器上都有这些工具,因此基于python的socket模块写了一个检测的脚本 脚本 在list_str按照例子中的写法添加ip和port即可...

EHOIST的博客 3786

无线通信入门:3种键控法(ASK/FSK/PSK)原理图解与实战对比

本文深入解析无线通信中ASK、FSK、PSK三种基础键控法的原理与应用。通过图解对比,阐明幅移键控(ASK)简单低成本但抗干扰差,频移键控(FSK)稳健且应用广泛,相移键控(PSK)高效但复杂。文章结合实战场景,为物联网和嵌入式开发者在选型时提供关键指导,帮助平衡数据速率、成本、功耗与抗干扰需求。

weixin_29274969的博客 188

STM32duino LSM6DSO驱动库:低功耗IMU工程化实践

惯性测量单元(IMU)是智能终端与工业设备实现运动感知的核心传感器,其性能关键在于数据精度、实时响应与系统功耗的协同优化。LSM6DSO作为集成加速度计与陀螺仪的六轴MEMS器件,依托片上有限状态机(FSM)和机器学习核心(MLC),支持自由落体检测、计步器、6D方向识别等硬件自治功能,显著降低主控CPU负载。在STM32平台下,通过深度耦合HAL/LL库、显式引脚管理、DMA加速SPI传输及EXTI中断协同,可实现亚毫秒级事件响应与微安级待机功耗。本文聚焦STM32duino生态中LSM6DSO驱动的工程

weixin_36304957的博客 551

sock5系列之简单测试sock5 连通性!(二)

先说一个感念性的名词---TPC半链接(TPC的三次握手) 在TCP/IP协议中,TCP协议提供可靠的连接服务,采用三次握手建立一个连接。   第一次握手:建立连接时,客户端发送syn包(syn=j)到服务器,并进入SYN_SEND状态,等待服务器确认; 第二次握手:服务器收到syn包,必须确认客户的SYN(ack=j+1),同时自己也发送一个SYN包(syn=k),即SYN+ACK包,此时

开心就好~~~专栏 7494

国产大模型高考横评:数学推理与教育落地能力实测

大模型能力评估正从开放榜单转向封闭任务的确定性验证,高考作为强逻辑、低容错、高精度的标准化考试,成为检验模型真实推理能力的理想标尺。其核心在于考察知识覆盖、步骤完整性、单位敏感性与教学对齐度,而非单纯答案正确率。数学解答题尤其凸显模型在前提校验、条件枚举与过程可控性上的差异,反映出训练数据与教育语料深度耦合带来的工程化优势。该范式已延伸至语文语感建模、英语表达习惯适配及理综跨学科缝合等场景,为智能阅卷、精准答疑和教培系统集成提供可复现、可解释、可部署的技术依据。

weixin_30436581的博客 288

利用python实现批量自动化运维脚本案例

本文为通过密码或密钥实现python批量自动化运维脚本案例分享 #!/usr/bin/env python # this script comes from beijing oldboy trainning. # e_mail:70271111@qq.com # function: remote multi exec cmd by ssh. # version:1.1 ########

aeoluspu的专栏 1万+

反爬虫:对抗最新反爬技术 Cloudflare详解

本文针对Cloudflare最新反爬机制提供完整解决方案,覆盖TLS指纹、行为轨迹、设备指纹等检测场景。文章首先分析Cloudflare的三重检测体系(TLS指纹、行为指纹、设备指纹)及其拦截表现,随后提出四种绕过方案:1)使用curl_cffi模拟浏览器TLS指纹;2)通过undetected-chromedriver移除自动化特征;3)Playwright结合stealth插件模拟人类行为;4)动态请求调度策略。重点推荐轻量级Python方案curl_cffi和浏览器自动化方案Playwright-st

数据知道的博客 4626

28_Spring AI 干货笔记之 OpenAI 聊天功能

本文详细介绍了在Spring AI框架中集成OpenAI聊天模型的方法。内容涵盖API密钥配置、通过starter依赖启用自动配置、连接与模型参数的详细设置,并重点说明了运行时选项的动态覆盖机制。文章还深入讲解了多模态处理(图像与音频)、结构化输出、函数调用等高级功能,提供了示例控制器和手动配置指南,并讨论了与OpenAI兼容服务器的适配与推理模型思维链的获取。

在科技的浪潮中,我们寻找着创新的火种,在代码的海洋里,我们编织着智慧的网。腾飞开源,就是这样一个由技术精英汇聚而成的博客平台,我们致力于分享在Java、Python、IoT和人工智能等领域的最新研究成果和实战经验。 在腾飞开源的博客上,你会看到紧跟技术前 1657

socket偶尔连接被拒绝的原因_Python批量检测服务器端口可用性与Socket函数使用

socket函数简述socket又称套间字或者插口,是网络通信中必不可少的工具。有道是:“无socket,不网络”。由于socket最早在BSD Unix上使用,而Unix/Linux所奉为经典的至高哲学是“一切皆是文件”。因此socket在使用时也是完全符合这个哲学的,它涉及到listen()、bind()、accept()、write()/read()、close()等基本的类似于文件操作的功...

weixin_36422176的博客 1407

VictoriaMetrics | 云原生监控新宠: 使用 vmagent 工具采集 VM 集群指标实战

摘要:本文介绍了vmagent工具的安装部署及配置实践,该工具是VictoriaMetrics官方提供的指标采集组件,支持兼容Prometheus指标采集与转发。文章详细讲解了从二进制方式部署vmagent的步骤,包括下载安装、创建运行环境、配置systemd服务等过程。通过8429端口可查看采集状态,并演示了将Prometheus配置迁移到vmagent的方法。vmagent可实现远程写入VictoriaMetrics集群,为云原生监控提供高效解决方案。

全栈工程师修炼指南-IT知识分享 446

accept函数_Python批量检测服务器端口可用性与Socket函数使用

socket函数简述socket又称套间字或者插口,是网络通信中必不可少的工具。有道是:“无socket,不网络”。由于socket最早在BSD Unix上使用,而Unix/Linux所奉为经典的至高哲学是“一切皆是文件”。因此socket在使用时也是完全符合这个哲学的,它涉及到listen()、bind()、accept()、write()/read()、close()等基本的类似于文件操作的功...

weixin_39863017的博客 300

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

python检测端口是否被占用_Python批量检测服务器端口可用性与Socket函数使用

socket函数简述socket又称套间字或者插口,是网络通信中必不可少的工具。有道是:“无socket,不网络”。由于socket最早在BSD Unix上使用,而Unix/Linux所奉为经典的至高哲学是“一切皆是文件”。因此socket在使用时也是完全符合这个哲学的,它涉及到listen()、bind()、accept()、write()/read()、close()等基本的类似于文件操作的功...

weixin_39982236的博客 251

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

python检测服务器端口代码实例 - python

文章来源:嗨学网 敏而好学论坛www.piaodoo.com 欢迎大家相互学习 这篇文章主要介绍了python检测服务器端口代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 import socket sk = socket.socket(socket.AF_INET, socket.SOCK_STREAM) sk.settimeou...

tgcf6698的博客 228

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

python telnet测试端口_python的socket连接端口:代替telnet检测服务器端口

场景:在使用linux过程中,我们常用telnet来测试对方服务器某个端口是否开通,但linux默认没有安装telnet客户端,很多时候临时安装telnet会比较麻烦,这时候就可以使用python来做简单测试了。pythonimportsockets=socket.socket()s.connect(("IP",port))s.close注:其实就是调用的socket模块,和telnet一样只能...

weixin_39980353的博客 1009

Python中Socket编程

目录 Python中Socket编程 1 一、Socket概述 1 二、python中socket模块使用 1 三、socket之聊天室 3 四、socket之端口探测 7 五、scapy之tcp端口探测 11 Python中Socket编程 一、Socket概述 socket通常也称作"套接字",用于描述IP地址和端口,是一个通信链的句柄,应用程序通常通过"套接字"向网络发出请求或者应答网络请求。 socket即是一种特殊的文件,socket函数就是对其进行的操作(读/写IO、打

weixin_45794666的博客 3931

如何用Python实现对电脑U盘的检测

本文将会介绍如何使用Python来实现对电脑U盘的检测,并对检测到的信息进行提示。

silentlurk的博客 1985

【亲测免费】 Android-python-socket:实现移动端与服务器端的高效图像传输

Android-python-socket:实现移动端与服务器端的高效图像传输 项目介绍 Android-python-socket 是一个开源项目,旨在通过Socket通信实现Android设备与Python服务器之间的图像传输。用户可以通过Android设备拍摄照片,并将其发送到运行Python的服务器端。服务器端处理图像后,再将结果反馈回Android设备。这一过程充分利用了Socket通信...

gitblog_00035的博客 1033

Socket简单通信(Python编程实现)

文章目录Socket1. Socket 原理1. TCP2. UDP3. Socket连接的步骤2. 实现1. 创建服务器2. 创建客户端3. 运行测试 Socket 1. Socket 原理 Socket ——> 是一套用于不同主机间通信的API,工作在我们的TCP/IP 协议栈上,其应用无处不在,比如我们的手机、浏览器、用户服务器管理的SSH客户端,全都是基于Socket实现的。要通过Socket在不同主机之间建立通信,我们只需要指定主机的IP地址和一个端口号     IP地址用于唯一标识我们的

Chenhui的博客 5226

Python之Socket传送文件

端口检测 client Server端口检测socket是0~65535。在使用socket进行文件传输的时候出现了Error 10061,这个意思表示服务器忙碌中无法与您建立联机,请稍后再试。 发生这样的错误的话那么就需要进行一个操作,,就是binding。 对于各种端口错误的解释: http://blog.chinaunix.net/uid-28458801-id-3879569.

I AM BACK 4652

python检测服务器端口

import socket sk = socket.socket(socket.AF_INET, socket.SOCK_STREAM) sk.settimeout(10) try: sk.connect(('127.0.0.1',80)) print('Server port 80 OK!') except Exception: ...

weixin_30699235的博客 205

Socket学习笔记(二):python通过socket实现客户端到服务器端的图片传输

文章目录设计思路代码实现传输结果 设计思路 运行思路如下 由于在做人脸视频检测的项目的时候需要将检测的人脸区域全部保存下来,并发送到服务器端(用虚拟机来代替),来进行人脸对比,整个代码设计思路如下。 客户端: save_file_dir作用是读取文件路径(返回每一个图片的具体路径) file_deal作用是将图片路径进行读取,返回字节数 send就是发送图片带服务器的过程,首先肯定要先和服务器进行connect,然后再确认一下服务器get到文件长度和文件名数据,就可以进行发送图片了。 服务器端: 只需

源的博客 1569
上一篇: 使用Python编写打字训练小程序
下一篇: Python使用psutil模块,做你的电脑管家
清风Python
博客等级 码龄7年 406粉丝 267原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值