Python实现Appium端口检测与释放

简介: Python实现Appium端口检测与释放

1. 监测端口

我们要引用的socket模块来校验端口是否被占用。


1.1 socket是什么?

简单一句话:网络上的两个程序通过一个双向的通信连接实现数据的交换,这个连接的一端称为一个socket。建立网络通信连接至少要一对端口号(socket)。


1.2 socket本质是什么?

socket本质是编程接口(API),对TCP/IP的封装,TCP/IP也要提供可供程序员做网络开发所用的接口,这就是Socket编程接口。


关于socket的通讯原理,我们可以参考socket通讯原理

关于socket模块内容,我们可以参考python 的socket模块文档


我们上代码,看看如何检测端口是否被使用


# -*- coding: utf-8 -*-
"""
@ auth : carl_DJ
@ time : 2020-7-7
"""
import socket
def check_port(host,port):
    "检查端口是否被占用"
    #创建socket对象
    s = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
    try:
        s.connect((host,port))
        s.shutdown(2)  #表示将来禁止读和写
    except OSError as msg:
        print("port %s is available !" %port)
        print(msg)
        return True
    else:
        print("port %s already in use! " %port)
        return False
if __name__ == '__main__':
    host = '127.0.0.1'
    prot = 4723
    check_port(host,prot)

这里注意一点:

shutdown(self,flag):禁止在一个Socket上进行数据的接收和发送。

利用shutdown()函数,使双向数据传输变为单向数据传输。

参数:


>0表示禁止将来读;

>1表示禁止将来写

>2表示禁止将来读和写。


我们来看看代码执行结果:

如下图状态,说明服务器没有开启这个端口服务,所以这个端口是可以使用!

image.png


2. 释放端口

如果端口被占用,我们就需要释放它。

那如何释放端口呢,?

有两种方法:

1.cmd窗口 释放 端口;

2.python代码释放端口。


2.1 cmd 释放端口

1、先查找我们要需要的端口号


netstat -aon | findstr "5037"

image.png

2、通过端口号,查找pid,然后杀死进程


taskkill -f -pid 18028

2.2 Python代码释放端口

那如果在python里面,如何实现呢?

我们看代码:


# -*- coding: utf-8 -*-
"""
@ auth : carl_DJ
@ time : 2020-7-7
"""
import os
def release_port(port):
    "释放指定端口"
    #查找端口对应的pid
    cmd_find = 'netstat -ano | findstr %s' %port
    print(cmd_find)
    #返回命令执行结果
    result = os.popen(cmd_find).read()
    print(result)
    if str(port) and 'LISTENING' in result:
        #获取端口对应的pid进程
        i = result.index('LISTENING')
        # 'LISTENING'与端口号之间相隔7个空格
        start = i + len('LISTENING') +7
        end = result.index('\n')
        pid = result[start:end]
        #关闭被占用端口的pid
        cmd_kill = 'taskkill -f -pid %s' %pid
        print(cmd_kill)
        os.popen(cmd_kill)
    else:
        print('port %s is available !' %port)
if __name__ == '__main__':
    host = '127.0.0.1'
    port = 4723
    release_port(port)

我们来瞅瞅,运行结果是啥:

image.png

说明4723这个端口,是可用的。

这里再说一句:


os.popen() :就是要打开一个管道,获取输入到cmd控制台的信息。

更详细的内容,可以参考pyhton的os.popen()官方文档

当然,如果想飞速了解os.popen()与os.system()

可以参照这篇《调用系统命令 os.system()和os.popen()》文章。

目录
相关文章
|
3月前
|
机器学习/深度学习 TensorFlow 算法框架/工具
使用Python实现深度学习模型:智能质量检测与控制
使用Python实现深度学习模型:智能质量检测与控制 【10月更文挑战第8天】
322 62
使用Python实现深度学习模型:智能质量检测与控制
|
1月前
|
网络协议 API
检测指定TCP端口开放状态免费API接口教程
此API用于检测指定TCP端口是否开放,支持POST/GET请求。需提供用户ID、KEY、目标主机,可选指定端口(默认80)和地区(默认国内)。返回状态码、信息提示、检测主机、端口及状态(开放或关闭)。示例中ID和KEY为公共测试用,建议使用个人ID和KEY以享受更高调用频率。
60 14
|
2月前
|
Java 测试技术 持续交付
【入门思路】基于Python+Unittest+Appium+Excel+BeautifulReport的App/移动端UI自动化测试框架搭建思路
本文重点讲解如何搭建App自动化测试框架的思路,而非完整源码。主要内容包括实现目的、框架设计、环境依赖和框架的主要组成部分。适用于初学者,旨在帮助其快速掌握App自动化测试的基本技能。文中详细介绍了从需求分析到技术栈选择,再到具体模块的封装与实现,包括登录、截图、日志、测试报告和邮件服务等。同时提供了运行效果的展示,便于理解和实践。
136 4
【入门思路】基于Python+Unittest+Appium+Excel+BeautifulReport的App/移动端UI自动化测试框架搭建思路
|
2月前
|
安全 Linux 网络安全
nmap 是一款强大的开源网络扫描工具,能检测目标的开放端口、服务类型和操作系统等信息
nmap 是一款强大的开源网络扫描工具,能检测目标的开放端口、服务类型和操作系统等信息。本文分三部分介绍 nmap:基本原理、使用方法及技巧、实际应用及案例分析。通过学习 nmap,您可以更好地了解网络拓扑和安全状况,提升网络安全管理和渗透测试能力。
209 5
|
2月前
|
网络协议 API
检测指定TCP端口开放状态免费API接口教程
该API用于检测目标主机指定TCP端口是否开放,适用于检测连通状态等场景。支持指定大陆、美国、香港等检测节点。请求地址为 `https://cn.apihz.cn/api/wangzhan/port.php`,支持POST和GET请求方式。请求参数包括 `id`、`key`、`type`、`host` 和 `port`。返回参数包含检测结果和状态码。示例请求:`https://cn.apihz.cn/api/wangzhan/port.php?id=88888888&key=88888888&type=1&host=49.234.56.78&port=80`。
|
2月前
|
机器学习/深度学习 PyTorch TensorFlow
使用Python实现智能食品质量检测的深度学习模型
使用Python实现智能食品质量检测的深度学习模型
181 1
|
3月前
|
Python
Python编程--使用NMAP端口扫描
Python编程--使用NMAP端口扫描
38 1
|
3月前
|
网络安全 Python
Python编程--目标IP地址段主机指定端口状态扫描
Python编程--目标IP地址段主机指定端口状态扫描
69 1
|
4月前
|
Docker Python 容器
python检测docker compose文件是否正确
python检测docker compose文件是否正确
|
3月前
|
运维 安全 网络协议
Python 网络编程:端口检测与IP解析
本文介绍了使用Python进行网络编程的两个重要技能:检查端口状态和根据IP地址解析主机名。通过`socket`库实现端口扫描和主机名解析的功能,并提供了详细的示例代码。文章最后还展示了如何整合这两部分代码,实现一个简单的命令行端口扫描器,适用于网络故障排查和安全审计。
62 0