Python—监测某一个端口是否被占用

#!/usr/bin/env python
# -*- coding:utf-8 -*-

import socket, time, thread
socket.setdefaulttimeout(3) #设置默认超时时间

def socket_port(ip, port):
    """
    输入IP和端口号,扫描判断端口是否占用
    """
    try:
        if port >=65535:
            print u‘端口扫描结束‘
        s=socket.socket(socket.AF_INET, socket.SOCK_STREAM)
        result=s.connect_ex((ip, port))
        if result==0:
            lock.acquire()
            print ip,u‘:‘,port,u‘端口已占用‘
            lock.release()
    except:
        print u‘端口扫描异常‘

def ip_scan(ip):
    """
    输入IP,扫描IP的0-65534端口情况
    """
    try:
        print u‘开始扫描 %s‘ % ip
        start_time=time.time()
        for i in range(0,65534):
            thread.start_new_thread(socket_port,(ip, int(i)))
        print u‘扫描端口完成,总共用时:%.2f‘ %(time.time()-start_time)
#       raw_input("Press Enter to Exit")
    except:
        print u‘扫描ip出错‘

if __name__==‘__main__‘:
    url=raw_input(‘Input the ip you want to scan: ‘)
    lock=thread.allocate_lock()
    ip_scan(url)

原文地址:https://www.cnblogs.com/jcjone/p/12158434.html

时间: 2024-08-10 20:49:29

Python—监测某一个端口是否被占用的相关文章

C#判断一个端口是不是被占用以及返回一个空闲端口

一.引言 在最近的工作当中,用到了 Socket 通信,然后要给 Socket 服务器端的监听获取一个空闲的本地监听端口. 对于这个获取方法要满足如下几点的要求: 这个端口不能是别的程序所使用的端口: 这个获取要支持异步,即多个线程同时获取不会出现返回多个相同的空闲端口(即线程安全): 这端口要有效的遍历一个区域内的端口,直到返回一个可用的空闲端口: 二.实现方法 网上的实现方法主要有两种: 1. 使用 .NET 提供的 IPGlobaProperties.GetIPGlobaPropertie

【小工具】python 在服务器上临时启用一个端口

在服务器还未部署应用,而这时候如果要验证网络是否开通,我们可以先在服务器上模拟启用应用的端口,然后从其他地方telnet这个端口来验证网络的开通情况. 这边使用python脚本来临时启用一个端口,用于测试使用. 脚本如下: import socket while True:     try:         port=int(input('Please input port >>>:'))         if port > 65535 or port < 1024:    

用Python实现一个端口扫描,只需简单几步就好

一.常见端口扫描的原理 0.秘密扫描 秘密扫描是一种不被审计工具所检测的扫描技术. 它通常用于在通过普通的防火墙或路由器的筛选(filtering)时隐藏自己. 秘密扫描能躲避IDS.防火墙.包过滤器和日志审计,从而获取目标端口的开放或关闭的信息.由于没有包含TCP 3次握手协议的任何部分,所以无法被记录下来,比半连接扫描更为隐蔽. 但是这种扫描的缺点是扫描结果的不可靠性会增加,而且扫描主机也需要自己构造IP包.现有的秘密扫描有TCP FIN扫描.TCP ACK扫描.NULL扫描.XMAS扫描和

如何查看appache的端口是否被占用

win + R 快捷键输入 cmd 打开命令行. 输入 netstat -ano 查看端口使用情况 Ctrl + Shift + Esc 打开 windows 任务管理器,依次单击 [查看][ 选择列]. 在弹出的 [选择进程页列] 对话框中, 把第一项 [PID(进程标识符)] 选中. 关闭 [选择进程页列] 对话框, 放大 Windows 任务管理器中的 [进程] 选项卡 , 找到 PID 所对应的程序. 在我的电脑中是因为我装了一个监控管理程序,占用了 80 端口.导致我的 Apache 

java web中 8080端口号被占用的问题处理,终于明白了 Address already in use: JVM_Bind(端口冲突)

1.错误描述 2011-7-20 11:05:18 org.apache.catalina.core.StandardServer await严重: StandardServer.await: create[8005]: Java.NET.BindException: Address already in use: JVM_Bind at java.net.PlainSocketImpl.socketBind(Native Method) at java.Net.PlainSocketImpl.

windows 2008 r2 系统默认80端口被系统占用的处理

--windows 2008 r2 系统默认80端口被系统占用的处理 --使用netstat 命令查看指定端口netstat -ano | findstr :80----如下所示:本地的80端口被进程为4的占用 TCP    0.0.0.0:80             0.0.0.0:0              LISTENING       4 TCP    192.168.1.207:60652    221.233.41.28:80       CLOSE_WAIT      1716

端口没被占用,怎么会bind失败呢?

今天在一个服务器上部署一个webserver的时候, 提示我bind端口失败, 我习惯性的用netstat看了下,没有被占用啊! 把问题分享出来后,给力的同事们搜索到了ip_local_port_range这个东西 这个东西对应的是/proc/sys/net/ipv4/ip_local_port_range文件 我打开后发现它的内容是: 1024 65000 然后我查了一下,这两个数字就是规定了一个端口范围 而这个文件规定了所谓的“临时端口”的可用端口范围 比如一个程序通过socket请求了本机

xampp Apache 443端口被vm占用 无法开启

今天心血来潮想要在windows上配一个Apache+Mysql+php的环境来着,结果翻书的时候翻到有xampp这样一个服务器套件,可以轻松的配置一个我想要的环境 而且还增加了perl 我感觉这个东西不错就下了一个试试 本来以为很简单的事情 又出现了问题(电脑上软件装的多了真是累QAQ) 装完xampp之后发现Apache无法启动,提示端口被占用.我在Netstat中查了一下发现是一个叫做 vmware-hostd.exe的程序占用了443端口 而且这个程序貌似还是vm的一个主要程序,虽然我平

TCP server 为什么一个端口可以建立多个连接?

https://segmentfault.com/q/1010000003101541 如果是tcp client用同一个本地端口去连不同的两个服务器ip,连第二个时就会提示端口已被占用.但服务器的监听端口,可以accept多次,建立多个socket:我的问题是服务器一个端口为什么能建立多个连接而客户端却不行呢? 2015年08月16日提问 评论 邀请回答 编辑 更多 默认排序时间排序 5个回答 答案对人有帮助,有参考价值8答案没帮助,是错误的答案,答非所问 已采纳 TCP server 可以,