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. Spring基础系列-Spring事务不生效的问题与循环依赖问题

    原创作品,可以转载,但是请标注出处地址:https://www.cnblogs.com/V1haoge/p/9476550.html 一.提出问题 不知道你是否遇到过这样的情况,在ssm框架中开发we ...

  2. Go Web:HttpRouter路由

    HttpRouter是一个轻量级但却非常高效的multiplexer.手册: https://godoc.org/github.com/julienschmidt/httprouter https:/ ...

  3. Spring Boot中如何扩展XML请求和响应的支持

    在之前的所有Spring Boot教程中,我们都只提到和用到了针对HTML和JSON格式的请求与响应处理.那么对于XML格式的请求要如何快速的在Controller中包装成对象,以及如何以XML的格式 ...

  4. [转]nodeJS中redis初步使用

    本文转自:https://blog.csdn.net/frankenjoy123/article/details/55209637 Node.js下使用Redis,首先: 1.有一台安装了Redis的 ...

  5. 第一册:lesson sixty five.

    原文: Not a baby. A:What are you going to do this evening Jill? B:I'm going to meet some friends, dad. ...

  6. ResourceOwnerPassword模式使用数据库.

    有时候, ResourceOwnerPassword模式有用的, 可以用来代替我们原来管理程序的开发方式. 因为管理程序本身拥有用户数据的权限嘛, 并不是第三方应用, 无需要授权 集成很简单. 1. ...

  7. Tomcat的Https设置及Http自动跳转Https

    Https相关介绍    Https是由NetScape公司设计的一个基于Http的加密传输协议,可以这样理解Https = Http +SSL(安全套接层),Https的端口为443,而且还需要申请 ...

  8. STM32-对芯片启动读保护,实现加密(详解)

    STM32可以对存储在flash上的程序进行读保护. 启动读保护后,用户就不能再读写程序了. 所以,在烧写程序之前,需要程序调用关闭读保护.关闭读保护后,会自动清空flash上的程序 头文件位于:#i ...

  9. linux系统mysql主从配置

    一.原理 mysql主从配置的流程大体如图: 1)master会将变动记录到二进制日志里面: 2)master有一个I/O线程将二进制日志发送到slave; 3) slave有一个I/O线程把mast ...

  10. 【转】为什么要使用ModelDriven

    ---恢复内容开始--- package cn.com.leadfar.struts2.actions; public class User { private int id ; private St ...