扫描端口占用情况的python脚本
之前项目上线前,领导要求让写一个脚本用来判断端口的占用情况。由于现在python3使用也比较多,基于python2修改了一下,做了个python3版本的,现在做一下总结。
一、python脚本实现扫描端口:
pthon2下代码如下(当时的环境):
#!/usr/bin/env python
# -*- coding:utf-8 -*-
# used for pthon2.*
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)
效果图:
python3的代码:
#!/usr/bin/env python
# -*- coding:utf-8 -*-
# used for python3.*
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=input('Input the ip you want to scan: ')
lock=_thread.allocate_lock()
ip_scan(url)
效果:
1. lsof -i:端口号 用于查看指定端口号的占用情况,如下查看80端口的情况。

1.ImportError: No module named 'thread'
说没有thread这个模块,python3中没有了thread模块,取而代之的是_thread和threading(推荐使用),_thread是为了过渡使用的。
2.IndentationError: unindent does not match any outer indentation level
百度后发现原因是因为混用了空格和tab。
tab键设置为4位。vim /etc/vimrc 增加set ts=4
3.关于python2与python3的区别
请查看该篇文章http://www.cnblogs.com/hanggegege/p/5840005.html
关注公众号
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
-
上一篇
centos6.5下使用lnmp架构安装nextcloud云盘
最近两年随着各大网盘纷纷关闭,百度云也早早的就开始限速,文件的安全也没有保障。所以还不如自己搭建一个网盘。网上看了下,发现有一个nextcloud比较好用。支持多平台客户端,支持分享,使用操作简单。支持插件扩展,文件预览,在线协作。 安装nginx wgethttp://nginx.org/download/nginx-1.10.3.tar.gz tar-zxfnginx-1.10.3.tar.gz&&cdnginx-1.10.3 ./configure--prefix=/usr/local/data/nginx--user=nginx--group=nginx--with-pcre--with-http_stub_status_module--with-http_ssl_module--with-http_gzip_static_module make&&makeinstall 2.安装配置php yuminstallhttp://rpms.famillecollet.com/enterprise/remi-release-6.rpm yum--ena...
-
下一篇
linux中生成考核用的GPT分区表结构修复案例
注:历史版本,后期改用python实现了 实验一: 目的:用于生成大量模拟破坏GPT分区结构案例,并生成唯一方式修复后的评判方法。 故障:在一个完整的GPT分区磁盘上,丢失了GPT主分区表,或备份分区表。 要求: 1、利用WINHEX手工方式,修复给定镜像文件的分区结构。 2、不得对现存主分区表或备份分区表做任何修改。 3、不得使用WINHEX GPT分区模板进行参考修复。 4、修复后生成整个镜像文件的MD5 HASH值。 实验样本生成过程: #!/bin/sh #删除头部做50个 for((i=1;i<=50;i++));do r1=$(($i+200)) qemu-imgcreate-fraw$i.img"$r1"M losetup/dev/loop0$i.img parted-s/dev/loop0mklabelgpt parted-s/dev/loop0mkpart-sprimaryext3128s100% ddif=/dev/loop02>/dev/null|md5sum-b|tra-zA-Z1>>md5.txt ddif=/dev/loop0of=h...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- CentOS6,CentOS7官方镜像安装Oracle11G
- CentOS8,CentOS7,CentOS6编译安装Redis5.0.7
- Windows10,CentOS7,CentOS8安装MongoDB4.0.16
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装
- CentOS7,CentOS8安装Elasticsearch6.8.6
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- Linux系统CentOS6、CentOS7手动修改IP地址
- SpringBoot2全家桶,快速入门学习开发网站教程
- Crontab安装和使用
- Red5直播服务器,属于Java语言的直播服务器




微信收款码
支付宝收款码