多线程扫描的shell实现

正常情况下,对局域网或者外网的某个IP地址段进行扫描,要用到循环以及shell中的一些命令。但是效率不是很理想。我在网上查阅了一些资料后,发现了parallel这个可以实现多线程的命令。

以下代码是对某个IP地址段进行三层发现的代码:

#ayao 2018/03/28

#For searching online IP in WLAN

#!/bin/bash

if [ "$#" -ne 1 ];then

echo "Example: './get-ip.sh 192.168.1.100'"

exit

fi

nic=$1

prefix=$(echo "$nic" | cut -d "." -f 1-3)

seq 1 254 | parallel -P 16 ping -c 1 $prefix.{} | grep "^64 bytes from" | awk '{print $4}' | cut -d ":" -f 1

前面的if语句用来对输入的参数进行简单的校验

然后将第一个参数赋值给nic,prefix以冒号为分隔符截取了nic变量的前三个字符

parallel命令的-P参数规定了线程的数量,{}表示parallel从管道符“|”接收来的参数

后面的一串管道用来从输出中截取IP地址


更多的paralle的详细用法可以参考这篇文章:https://www.jianshu.com/p/c5a2369fa613


文章原创,转载请注明出处

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • .bat脚本基本命令语法 目录 批处理的常见命令(未列举的命令还比较多,请查阅帮助信息) 1、REM 和 :: 2...
    庆庆庆庆庆阅读 8,224评论 1 19
  • 个人学习批处理的初衷来源于实际工作;在某个迭代版本有个BS(安卓手游模拟器)大需求,从而在测试过程中就重复涉及到...
    Luckykailiu阅读 4,782评论 0 11
  • 官网 中文版本 好的网站 Content-type: text/htmlBASH Section: User ...
    不排版阅读 4,467评论 0 5
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,991评论 19 139
  • 基础命令 主要的命令和快捷键 Linux系统命令由三部分组成:cmd + [options]+[operation...
    485b1aca799e阅读 1,126评论 0 0