扫描端口占用情况的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端口的情况。
2.netstat -tunlp |grep 端口号,用于查看指定的端口号的进程情况,如查看25端口的情况,netstat -tunlp |grep 25
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条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- 2048小游戏-低调大师作品
- Windows10,CentOS7,CentOS8安装MongoDB4.0.16
- SpringBoot2全家桶,快速入门学习开发网站教程
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- Eclipse初始化配置,告别卡顿、闪退、编译时间过长
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- SpringBoot2更换Tomcat为Jetty,小型站点的福音
- CentOS8,CentOS7,CentOS6编译安装Redis5.0.7
- CentOS7,8上快速安装Gitea,搭建Git服务器
- CentOS6,CentOS7官方镜像安装Oracle11G