appium--自动检测端口和释放端口

简介: appium--自动检测端口和释放端口

检测端口


当端口被其他服务占用时,如果我们还启动这个端口,则会报错,所以很有必要在使用这个端口时,先来检测一下这个端口有没有被其他服务使用。

端口检测需要用到socket模块来校验端口是否被占用

什么是socket?

网络上的两个程序通信,底层都是使用socket来实现的。socket的本质是编程接口,对TCP/IP的封装。

shutdown(flag) 禁止在 一个socket上进行数据的接收与发送,利用shutdown函数使socket双向数据传输变为单项数据传输, shutdown()需要一个单独的参数,该参数表示如果关闭socket

  • 0表示禁止以后读
  • 1表示禁止以后写
  • 2表示禁止以后读和写
import socket
def check_port(host, port):
    s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    try:
        s.connect((host, port))
        s.shutdown(2)
    except OSError as e:
        print('端口没有被其他服务占用,可以使用')
        print(e)
    else:
        print('端口被其他服务占用了')
if __name__ == '__main__':
    check_port(host='127.0.0.1', port=4723)  # port不能是字符串

当我们启动appium服务,并且端口是4723时,提示我们

端口被其他服务占用了

当端口没有被其他服务使用时提示

端口没有被其他服务占用,可以使用
[WinError 10061] 由于目标计算机积极拒绝,无法连接。

这时候我们就可以使用4723端口了


自动释放端口


前面我们说了关闭端口的两种方式,第一种是在资源管理器中关闭,第二种是使用命令关闭,不管是哪种方式,都需要我们手动去执行,对于做自动化的老司机来说,这肯定不行的,接下来让我们使用脚本来关闭

import os
# 释放端口
def release_port(port):
    # 执行命令
    cmd_find = 'netstat -aon | findstr %s' % (port)
    print('cmd_find', cmd_find)
    # 返回执行后的结果
    res = os.popen(cmd_find).read()
    print('res', res)
    if str(port) and 'LISTENING' in res:
        # 获取端口的pid
        i = res.index('LISTENING') # LISTENTING的索引
        start = i + len('LISTENING') + 7
        end = res.index('\n')
        pid = res[start:end]
        print('pid:', pid)
        # 关闭被占用端口的pid
        cmd_kill = 'taskkill -f -pid %s' % (pid)
        print('cmd_kill:', cmd_kill)
        os.popen(cmd_kill)  # 关闭端口
    else:
        print('当前端口是可以使用的')
if __name__ == '__main__':
    release_port(4727)

结果:

cmd_find netstat -aon | findstr 4727
res   TCP    0.0.0.0:4727           0.0.0.0:0              LISTENING       3056
pid: 3056
cmd_kill: taskkill -f -pid 3056


相关文章
|
25天前
|
网络协议 API
检测指定TCP端口开放状态免费API接口教程
此API用于检测指定TCP端口是否开放,支持POST/GET请求。需提供用户ID、KEY、目标主机,可选指定端口(默认80)和地区(默认国内)。返回状态码、信息提示、检测主机、端口及状态(开放或关闭)。示例中ID和KEY为公共测试用,建议使用个人ID和KEY以享受更高调用频率。
45 14
|
1月前
|
安全 Linux 网络安全
nmap 是一款强大的开源网络扫描工具,能检测目标的开放端口、服务类型和操作系统等信息
nmap 是一款强大的开源网络扫描工具,能检测目标的开放端口、服务类型和操作系统等信息。本文分三部分介绍 nmap:基本原理、使用方法及技巧、实际应用及案例分析。通过学习 nmap,您可以更好地了解网络拓扑和安全状况,提升网络安全管理和渗透测试能力。
148 5
|
1月前
|
网络协议 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月前
|
运维 安全 网络协议
Python 网络编程:端口检测与IP解析
本文介绍了使用Python进行网络编程的两个重要技能:检查端口状态和根据IP地址解析主机名。通过`socket`库实现端口扫描和主机名解析的功能,并提供了详细的示例代码。文章最后还展示了如何整合这两部分代码,实现一个简单的命令行端口扫描器,适用于网络故障排查和安全审计。
57 0
|
7月前
|
网络协议 Java
Java中如何使用Socket类检测端口是否存在
Java中如何使用Socket类检测端口是否存在
147 4
|
6月前
|
前端开发 Java 应用服务中间件
linux本地检测如何tomcat是否启动成功tomcat端口检测
linux本地检测如何tomcat是否启动成功tomcat端口检测
80 0
|
7月前
|
Shell
Shell脚本检测服务器或者ip哪些端口是开放的都是开放了哪些端口
Shell脚本检测服务器或者ip哪些端口是开放的都是开放了哪些端口
58 0
|
7月前
|
运维 安全 数据库
cmd中使用telnet检测远程的ip及端口是否处于监听状态
cmd中使用telnet检测远程的ip及端口是否处于监听状态
139 1
|
监控 网络协议 Linux
Linux利用nc命令脚本批量检测服务器指定端口是否开放
nc命令脚本批量检测服务器指定端口是否开放
1174 0
Linux利用nc命令脚本批量检测服务器指定端口是否开放
|
网络协议 Linux Windows
检测端口连通性
使用psping, paping, tcping等工具检测TCP, UDP等端口的联通情况
345 1