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编写端口扫描脚本的更多相关文章

  1. Linux shell编写脚本部署pxe网络装机

    Linux shell编写脚本部署pxe网络装机 人工安装配置,Linux PXE无人值守网络装机  https://www.cnblogs.com/yuzly/p/10582254.html 脚本实 ...

  2. Linux shell批量执行scp脚本工具

    转载: linux shell + expect:批量scp脚本工具             2011-09-13 15:51:06 分类: Python/Ruby 最近在准备一个部署的任务,其中有一 ...

  3. linux shell根据端口返回进程号杀死进程的方法

    linux shell根据端口返回进程号杀死进程的方法<pre>kill `lsof -t -i:9501`</pre>这个就是杀死9501端口的进程号

  4. linux shell 写swoole重启脚本

    linux shell 写swoole重启脚本 代码如下<pre>#!/bin/shkill `lsof -t -i:9501`sleep 2php /data/web/mircoweb/ ...

  5. Scapy编写ICMP扫描脚本

    使用Scapy模块编写ICMP扫描脚本: from scapy.all import * import optparse import threading import os def scan(ipt ...

  6. shell编写一个判断脚本

                                                              shell编写一个判断脚本 4.1问题 本例要求在虚拟机server0上创建/roo ...

  7. Linux shell简单创建用户脚本

    前面介绍简单的shell编写规则. 现在开始编写一个简单的shell脚本. Linux shell介绍 编写shell脚本    1.创建脚本文件    2.根据需求,编写脚本    3.测试执行脚本 ...

  8. Qt编写端口扫描工具

    Qt提供了QTcpSocket类,可以方便地建立TCP连接.利用这一功能,Maxiee编写了一个简单地端口扫描工具. 软件的功能就是,扫描某一网段的固定端口,如80端口,若目的地址开放了这一端口,那么 ...

  9. 34.TCP非阻塞连接及套接字异常处理丶端口扫描脚本

    TCP非阻塞及套接字异常处理: TCP阻塞套接字异常捕获: 套接字创建失败,8000 socket.error 客户端连接错误: ConnectionRefusedError socket.gaier ...

随机推荐

  1. LeetCode Animation 题目图解汇总(持续更新中...)

    我会尽力将LeetCode上所有的题目都用动画的形式演示出来,期待与你见证这一天! GitHub Repo:LeetCode Animation Follow: MisterBooo · GitHub ...

  2. 基础篇:1.JavaScript运行在html中,引用有几种方式?—— 6.js中常用的输出方式?

    书接上文,上文提到若干条JavaScript的基础性知识,大部分都是一些概念性的东西,本着认真严谨的态度,我们要认真对待,有些条目的问题是某个知识点的周边延伸,为节约篇幅,就一起整理了,如有描述不对的 ...

  3. nginx支持跨域访问

    1,进入nginx的html目录 vim ./crossdomain.xml 具体路径: /usr/local/nginx/html/crossdomain.xml 2,在crossdomain.xm ...

  4. .Net Core 读取配置文件 appsettings.json

    1. 首先些一个类 public class MySettings { public string P1 { get; set; } public string P2 { get; set; } } ...

  5. [android] 内容提供者实现

    [android] 内容提供者实现 上一节的主机名类似网络上的域名,协议是content://,可以定义一下规则 content://主机名/insert 添加操作 content://主机名/del ...

  6. Java中的强引用和弱引用

    旭日Follow_24 的CSDN 博客 ,全文地址请点击: https://blog.csdn.net/xuri24/article/details/81114944 一.强引用 如下是强引用的经典 ...

  7. angular 去掉url里面的#

    1.适合客户端的方法,但是页面不能刷新,一刷新就404 (1)在index.html里添加 <base href="/"> (2)在app.js的config里,注入$ ...

  8. JDK和Tomcat安装

    JDK安装: 1,选择安装位置,其余默认安装,安装两次,一个是JDK,一个是JRE,安装在两个文件夹中. 2,配置环境变量: 1,新建一个变量,变量名:JAVA_HOME,变量值:C:\Program ...

  9. JavaScript之Object对象常用属性与方法手册

    MDN Object参考地址:https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Obje ...

  10. Activiti实现流程自由跳转

    import org.activiti.engine.ProcessEngine; import org.activiti.engine.TaskService; import org.activit ...