Linux shell编写端口扫描脚本
Linux shell编写端口扫描脚本
需求:
扫描特定主机
扫描特定主机的特定端口
扫描特定网段
扫描特定网段中哪些主机开放了特定的端口
源码如下:
#/bin/bash
#该脚本用于对特定目标主机进行常见端口扫描(加载端口字典)或者指定端口扫描,判断目标主机开放来哪些端口
#用telnet方式
#作者:雨中落叶
#博客:https://www.cnblogs.com/yuzly/
IP=$
#获得IP的前三位
threeIP=$(echo $IP |awk -F. '{print $1"."$2"."$3"."}')
#获得IP的第四位
endIP=$(echo $IP | awk -F. '{print $4}')
if [ $ ]
then
if [ $ ]
then
#IP的第四位为0表明是一个网段,对整个网段进行特定端口的扫描,发现哪个主机开放特定端口
if [ $endIP -eq ]
then
for ((i=;i<=;i++))
do
(sleep ;)|telnet $threeIP$i $ >& |grep "Connected to $threeIP$i">/dev/null
if [ $? -eq ]
then
echo "主机$threeIP$i开放$2端口!"
else
echo "主机$threeIP$i的$2端口关闭!"
fi
done
else
#IP的第四位不为0,说明是单个IP,对单个IP进行特定端口扫描
(sleep ;)|telnet $ $ >& |grep "Connected to $1">/dev/null
if [ $? -eq ]
then
echo "主机$1开放$2端口!"
else
echo "主机$1的$2端口关闭!"
fi
fi
else
#脚本只有一个IP参数,根据IP的第四位是否为0来判断是否为网段,因为没有端口参数,扫描默认端口
if [ $endIP -eq ]
then
for ((i=;i<=;i++))
do
for port in $(cat defaultport.txt)
do
(sleep ;)|telnet $threeIP$i $port >& |grep "Connected to $threeIP$i">/dev/null
if [ $? -eq ]
then
echo "主机$threeIP$i开放$port端口!"
else
echo "主机$threeIP$i的$port端口关闭!"
fi
done
done
else
#脚本只有IP一个参数,没有端口参数,加载端口字典扫描默认端口
for i in $(cat defaultport.txt)
do
#与目标主机的特定端口只通信1秒,根据返回的数据来判断目标是否开放特定端口
(sleep ;)|telnet $ $i >& |grep "Connected to $1">/dev/null
if [ $? -eq ]
then
echo "主机$1开放$i端口!"
else
echo "主机$1的$i端口关闭!"
fi
done
fi
fi
else
echo "*******************************************
该脚本的用法示例:
$ 192.168.1.1(扫描默认端口)
$ 192.168.1.1 portx(扫描指定IP指定端口portx)
$ 192.168.1.0(扫描指定网段,扫描默认端口)
$ 192.168.1.0 portx(扫描指定网段指定端口portx)
******************************************** "
fi
1.测试,扫描特定主机(没有给出端口,扫描默认端口文件) 
2. 测试,扫描特定主机的特定端口
3. 测试,扫描特定网段(没给端口参数,扫描默认端口文件) #实验为例减少测试时间只扫描了很小的网段 
4.测试,扫描特定网段中哪些主机开放了特定的端口

Linux shell编写端口扫描脚本的更多相关文章
- Linux shell编写脚本部署pxe网络装机
Linux shell编写脚本部署pxe网络装机 人工安装配置,Linux PXE无人值守网络装机 https://www.cnblogs.com/yuzly/p/10582254.html 脚本实 ...
- Linux shell批量执行scp脚本工具
转载: linux shell + expect:批量scp脚本工具 2011-09-13 15:51:06 分类: Python/Ruby 最近在准备一个部署的任务,其中有一 ...
- linux shell根据端口返回进程号杀死进程的方法
linux shell根据端口返回进程号杀死进程的方法<pre>kill `lsof -t -i:9501`</pre>这个就是杀死9501端口的进程号
- linux shell 写swoole重启脚本
linux shell 写swoole重启脚本 代码如下<pre>#!/bin/shkill `lsof -t -i:9501`sleep 2php /data/web/mircoweb/ ...
- Scapy编写ICMP扫描脚本
使用Scapy模块编写ICMP扫描脚本: from scapy.all import * import optparse import threading import os def scan(ipt ...
- shell编写一个判断脚本
shell编写一个判断脚本 4.1问题 本例要求在虚拟机server0上创建/roo ...
- Linux shell简单创建用户脚本
前面介绍简单的shell编写规则. 现在开始编写一个简单的shell脚本. Linux shell介绍 编写shell脚本 1.创建脚本文件 2.根据需求,编写脚本 3.测试执行脚本 ...
- Qt编写端口扫描工具
Qt提供了QTcpSocket类,可以方便地建立TCP连接.利用这一功能,Maxiee编写了一个简单地端口扫描工具. 软件的功能就是,扫描某一网段的固定端口,如80端口,若目的地址开放了这一端口,那么 ...
- 34.TCP非阻塞连接及套接字异常处理丶端口扫描脚本
TCP非阻塞及套接字异常处理: TCP阻塞套接字异常捕获: 套接字创建失败,8000 socket.error 客户端连接错误: ConnectionRefusedError socket.gaier ...
随机推荐
- 【ASP.NET MVC系列】浅谈ASP.NET MVC资源过滤和授权
最近比较忙,博客很久没更新了,很多博友问何时更新博文,因此,今天就花了点时间,写了本篇文章,但愿大家喜欢. 本篇文章不适合初学者,需要对ASP.NET MVC具有一定基础. 本篇文章主要从ASP.NE ...
- [总结] Min-Max容斥学习笔记
min-max 容斥 给定集合 \(S\) ,设 \(\max(S)\) 为 \(S\) 中的最大值,\(\min(S)\) 为 \(S\) 中的最小值,则: \[\max(S)=\sum_{T\in ...
- 爬虫应对js混淆的方法
大家做爬虫可能经常要跟js打交道.如果积累一定的经验肯定会遇到eval(....);这种js,很多新人可能慌了,woc这怎么办??????? 下面楼主给大家介绍一种方法简单,有效. F12 在Cons ...
- 在JS方法中返回多个值的三种方法(转载)
来源:https://www.cnblogs.com/gxsyj/p/6004574.html 在使用JS编程中,有时需要在一个方法返回两个个或两个以上的数据,用下面的几种方法都可以实现: 1 使用数 ...
- 30.QT-渐变之QLinearGradient、 QConicalGradient、QRadialGradient
渐变有三种:QLinearGradient.QConicalGradient . QRadialGradient 它们都有一个QGradient父类 QGradient父类的常用公共函数有: void ...
- Android Service解析
Android Service是一个可以在后台执行长时间运行操作而不提供用户界面的应用组件,它分为两种工作状态,一种是启动状态,主要用于执行后台计算:另一种是绑定状态,主要用于其他组件和Service ...
- ConstraintLayout使用
引言 ConstraintLayout是一个ViewGroup,允许您以灵活的方式定位和调整小部件的方法,项目中的布局嵌套问题对项目性能有着不小的威胁,布局能实现扁平化的话会让软件性能得到很大的提升, ...
- 递归 + OS模块
''' 递归调用 :一个函数,调用了自身,称为递归调用 递归函数:一个会调用自身的函数称为递归函数 凡是循环能干的事,递归都能干 ''' ''' 方式: 1.写出临界条件 2.找这一次和上一次的关系 ...
- javascript模块化编程-立即执行函数(IIFE)
IIFE 全拼Imdiately Invoked Function Expression,立即执行的函数表达式. 语法 var module1 = (function(){ var _count = ...
- loj#6030. 「雅礼集训 2017 Day1」矩阵(贪心 构造)
题意 链接 Sol 自己都不知道自己怎么做出来的系列 不难观察出几个性质: 最优策略一定是先把某一行弄黑,然后再用这一行去覆盖不是全黑的列 无解当且仅当无黑色.否则第一个黑色所在的行\(i\)可以先把 ...