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

原文地址:https://www.cnblogs.com/zouzou-busy/p/11440815.html

时间: 2024-11-02 17:02:39

appium--自动检测端口和释放端口的相关文章

Appium+Python3 端口自动检测和释放

#!/usr/bin/env python # -*- coding: utf-8 -*- # @Time : 2019-08-06 10:38 # @Author : zhouyang # @File : check_port.py ''' Appium端口自动检测是否被占用 shutdown(self,flag):禁止在一个Socket上进行数据的接受和发送.利用shutdown()函数使socket双向数据传输变为单向数据传输, shutdown()需要一个单独的参数,该参数表示了如何关闭

ubuntu查看和释放端口

1.Netstat 命令用于显示各种网络相关信息,如网络连接,路由表,接口状态 (Interface Statistics),masquerade 连接,多播成员 (Multicast Memberships) 等等. 2.lsof(list open files)是一个列出当前系统打开文件的工具. 3.kill命令是通过向进程发送指定的信号来结束进程的. 所以,可以用以下两种方法: lsof -i :8001 netstat -apn|grep 8001 释放端口就kill对应的pid: ki

Linux如何批量检测端口连通性、端口是否开放

有没有批量检测的方法?有的.我们用nc就可以快速检测端口的开放性. nc检测端口的用法 nc -z -w 10  -u%IP% %PORT% -z表示检测或者扫描端口-w表示超时时间-u表示使用UDP协议,此参数为空,则为tcp协议 例如: [@s136.ipcpu.com ~]# nc -z -w 10 -u 8.8.8.8 53 Connection to 8.8.8.8 53 port [udp/domain] succeeded! [@s136.ipcpu.com ~]# nc -z -

Telnet命令检测远程主机上的端口是否开启

ping命令不能检测端口,只能检测你和相应IP是否能连通. 本地虚拟机里安装了一个Ubuntu,使用Putty连接22端口操作时提示失败,于是查看对应端口是否开启. Windows下要检测远程主机上的某个端口是否开启,可以使用微软自带工具telnet. 1.安装telnet.win7下默认telnet功能是关闭的,在cmd下输入telnet提示没有该命令. 进入控制面板---->程序---->打开或关闭windows功能.然后等一段时间,在出来的对话框把telnet客户端和telnet服务器勾

linux 自动检测 IRQ 号

驱动在初始化时最有挑战性的问题中的一个是如何决定设备要使用哪个 IRQ 线. 驱动需 要信息来正确安装处理. 尽管程序员可用请求用户在加载时指定中断号, 这是个坏做法, 因为大部分时间用户不知道这个号, 要么因为他不配置跳线要么因为设备是无跳线的. 大 部分用户希望他们的硬件"仅仅工作"并且不感兴趣如中断号的问题. 因此自动检测中断号 是一个驱动可用性的基本需求. 有时自动探测依赖知道一些设备有很少改变的缺省动作的特性. 在这个情况下, 驱动可能 假设缺省值适用. 这确切地就是 sho

iOS内存泄漏自动检测工具PLeakSniffer

http://www.cocoachina.com/ios/20160706/16951.html 本文授权转自MrPeak技术分享(公众号:MrPeakTech) 新款Objective-C内存泄漏自动检测工具PLeakSniffer,GitHub地址. 背景 前些天读到WeRead团队分享的一款内存泄漏检测工具MLeaksFinder,恍惚想起早些时候自己也有过编写这样一个小工具的想法,不知道由于什么原因把这事给忘记了.在仔细读过MLeaksFinder源码,了解实现思路之后,发现和自己最初

ssh命令:隧道代理+本地端口转发+远程端口转发

0.前言 nc是一个在网络连接两端的好工具,同时也是也个临时的端口转发的好工具.(永久的端口转发用什么?用iptables) ssh也是这方面的好工具,好处是加密可靠可复用在一端操作即可,代价是要有登录帐号. 我们知道,SSH 会自动加密和解密所有 SSH 客户端与服务端之间的网络数据.但是,SSH 还同时提供了一个非常有用的功能,这就是端口转发.它能够将其他 TCP 端口的网络数据通过 SSH 链接来转发,并且自动提供了相应的加密及解密服务. 1.隧道带理 典型应用:翻越中国高墙 需要条件:一

端口隔离和端口安全

采用端口隔离功能,可以实现同一VLAN内端口之间的隔离 端口隔离 可以二层隔离 也可以三层隔离 [Huawei]port-isolate mode ?all Alll2 L2 only 缺省情况下,端口隔离模式为二层隔离三层互通. 如果用户希望同一VLAN不同端口下用户彻底无法通信,则可以将隔离模式配置为二层三层均隔离即可. S1720GFR.S1720GW-E.S1720GWR-E.S1720X-E.S2750.S5700LI.S5720LI.S5720S-LI.S5710-X-LI.S570

查看端口、关闭端口

1.在dos命令下查看tomcat占用的进程,首先在运行里输入cmd进入dos,输入命令“netstat -ano | findstr 8080”(tomcat默认端口为8080).查出PID(最后一列就是),假设PID为207340,输入命令“taskkill /F /PID 207340”,这样8080端口就释放了 原文地址:https://www.cnblogs.com/duanwandao/p/9943643.html