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 ...
随机推荐
- python装饰器2:类装饰器
装饰器1:函数装饰器 装饰器2:类装饰器 装饰器3:进阶 本文是装饰器相关内容的第二篇,关于类装饰器. "类装饰器"有两种解读方式:用来装饰类的装饰器:类作为装饰器装饰其它东西.你 ...
- java8 集合求差集、并集、交集
前言 java8里最大亮点是lambda,让我们用习惯C# linq的语法,也能眼前一亮.但是比起C#的语法糖还是差的很远. 差集.并集.交集 @Test public void test1(){ L ...
- JVM(二)—— 垃圾回收
垃圾回收 垃圾回收主要解决三个问题(回收哪些Which,什么时候回收WHEN,如何回收HOW) 一.回收哪些 这三个问题,最主要的还是第一个,Which回收哪些,评断回收还是不回收的标准是看对象是否被 ...
- JS_object添加变量属性_动态属性
总结,给对象动态添加变量属性的方法如下: obj[变量]=变量值; 备注: obj.属性=属性值 ; obj={属性:属性值}; 这两种方式添加的属性都不能使用变量作为属性. 犯过的错误: var t ...
- C#操作DataReader类
一.常用属性 名称 说明 Depth 获取一个值,用于指示当前行的嵌套深度 FieldCount 获取当前行中的列数 HasRows 获取一个值,该值指示 SqlDataReader 是否有行 IsC ...
- Centos 7.6搭建LAMP,部署zabbix监控环境
一.安装环境 LAMP 1.安装apache yum install -y httpd httpd服务开机进行自启:systemctl enable httpd 启动httpd服务:systemctl ...
- eclipse使用svn
主干(trunk).分支(branch ).标记(tag) 用法示例 + 图解 以svn为例,git的master相当于trunk,dev分支相当于branches --------------- ...
- PHP Warning: PHP Startup: redis: Unable to initialize module Windows版本phpredis扩展
版权声明:经验之谈,不知能否换包辣条,另,转载请注明出处.https://www.cnblogs.com/zmdComeOn/category/1295248.html [root@VM_0_2_ce ...
- 6个小而美的es6新特性
译者:动静若参商 译文:http://www.zcfy.cc/article/1795 原文:https://davidwalsh.name/es6-features JavaScript社区中的每个 ...
- javaScript 设计模式之中介者模式示例
飞机把注册信息放到铁塔里,发送数据到铁塔,报告其它的飞机一些信息. var feiji = function( name ){ this.name = name; } feiji.prototype. ...