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. python装饰器2:类装饰器

    装饰器1:函数装饰器 装饰器2:类装饰器 装饰器3:进阶 本文是装饰器相关内容的第二篇,关于类装饰器. "类装饰器"有两种解读方式:用来装饰类的装饰器:类作为装饰器装饰其它东西.你 ...

  2. java8 集合求差集、并集、交集

    前言 java8里最大亮点是lambda,让我们用习惯C# linq的语法,也能眼前一亮.但是比起C#的语法糖还是差的很远. 差集.并集.交集 @Test public void test1(){ L ...

  3. JVM(二)—— 垃圾回收

    垃圾回收 垃圾回收主要解决三个问题(回收哪些Which,什么时候回收WHEN,如何回收HOW) 一.回收哪些 这三个问题,最主要的还是第一个,Which回收哪些,评断回收还是不回收的标准是看对象是否被 ...

  4. JS_object添加变量属性_动态属性

    总结,给对象动态添加变量属性的方法如下: obj[变量]=变量值; 备注: obj.属性=属性值 ; obj={属性:属性值}; 这两种方式添加的属性都不能使用变量作为属性. 犯过的错误: var t ...

  5. C#操作DataReader类

    一.常用属性 名称 说明 Depth 获取一个值,用于指示当前行的嵌套深度 FieldCount 获取当前行中的列数 HasRows 获取一个值,该值指示 SqlDataReader 是否有行 IsC ...

  6. Centos 7.6搭建LAMP,部署zabbix监控环境

    一.安装环境 LAMP 1.安装apache yum install -y httpd httpd服务开机进行自启:systemctl enable httpd 启动httpd服务:systemctl ...

  7. eclipse使用svn

    主干(trunk).分支(branch ).标记(tag) 用法示例 + 图解   以svn为例,git的master相当于trunk,dev分支相当于branches --------------- ...

  8. PHP Warning: PHP Startup: redis: Unable to initialize module Windows版本phpredis扩展

    版权声明:经验之谈,不知能否换包辣条,另,转载请注明出处.https://www.cnblogs.com/zmdComeOn/category/1295248.html [root@VM_0_2_ce ...

  9. 6个小而美的es6新特性

    译者:动静若参商 译文:http://www.zcfy.cc/article/1795 原文:https://davidwalsh.name/es6-features JavaScript社区中的每个 ...

  10. javaScript 设计模式之中介者模式示例

    飞机把注册信息放到铁塔里,发送数据到铁塔,报告其它的飞机一些信息. var feiji = function( name ){ this.name = name; } feiji.prototype. ...