python windows端口检测并杀死脚本

根据端口号杀死PID进程

def kill_port(port):
    """根据端口号杀死对应的进程"""
    # 根据端口号查询pid
    find_port = 'netstat -aon | findstr %s' % port
    # 执行cmd命令 返回对象
    result = os.popen(find_port)
    # 读取返回结果
    text = result.read()
    print(f'端口:{port}占用情况:')
    print(text)
    # 提取pid
    text = [i.split(' ') for i in text.split('\n') if i]
    pids = []
    for i in text:
        pid = [u for u in i if u]
        if str(port) in pid[1]:
            pids.append(pid[-1])
    pids = list(set(pids))
    # 杀死占用端口的pid
    for pid in pids:
        find_kill = 'taskkill -f -pid %s' % pid
        result = os.popen(find_kill)
        print(result.read())

根据端口号杀死程序

  • 检测端口是否被占用
    def net_is_used(self, port, ip='127.0.0.1'):
        """
        检测端口是否被占用
        :param port: 端口
        :param ip:IP地址
        :return:
        """
        s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
        try:
            s.connect((ip, port))
            s.shutdown(2)
            # print(f'sorry, {ip}:{port} 端口已被占用!')
            return True
        except Exception as e:
            # print(f'{ip}:{port}端口未启用!')
            print(e)
            return False
  • 根据端口占用情况启动对应程序
    def switch_appium(self):
        """启动Appium服务"""
        print('杀死Appium服务')
        node = 'taskkill /F /IM node.exe'
        cmd = 'taskkill /F /IM cmd.exe'
        os.system(node)
        os.system(cmd)
        print('启动Appium服务')
        os.system('appium_server.bat')
        time.sleep(5)
        if not self.net_is_used(4723):
            print('Appium服务启动失败!')
            os._exit(0)
        print('Appium服务启动成功!')
  • 根据端口号杀死对应程序
    def kill(self):
        """
        根据端口找到PID:netstat -aon|findstr "443"
        根据PID找到程序名:tasklist|findstr "12380"
        杀死进程   # /F 强制终止进程, /T 终止指定的进程和由它启用的子进程, /IM 指定要终止的进程的映像名称
        """
        node = 'taskkill /F /IM node.exe'
        mitmdump = 'taskkill /F /IM mitmdump.exe'
        cmd = 'taskkill /F /IM cmd.exe'
        os.system(node)  # 杀死appium进程
        os.system(mitmdump)  # 杀死mitmdump进程
        os.system(cmd)  # 关闭命令行窗口

根据程序查询pid

def get_pid(pname):
    """
    根据程序名查询pid
    :param pname: 程序名(python.exe)
    :return: pid列表
    """
    pids = []
    for proc in psutil.process_iter():
        print(proc)  # pid 程序名 程序开启时间
        # print('pid-%d,name:%s' % (proc.pid, proc.name()))
        if proc.name() == pname:
            pids.append(proc.pid)
            continue
    return pids

百度网盘下载链接

链接:端口号检测并杀死.exe
https://pan.baidu.com/s/1a_4AP8aKxBHSNJPBP1sZ4A
提取码:l1a8


本文仅供学习交流使用,如侵立删!


评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

拉灯的小手

您的鼓励将是我最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值