美文网首页
多线程扫描的shell实现

多线程扫描的shell实现

作者: 阿摇的马 | 来源:发表于2018-03-28 10:49 被阅读0次

    正常情况下,对局域网或者外网的某个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

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

    相关文章

      网友评论

          本文标题:多线程扫描的shell实现

          本文链接:https://www.haomeiwen.com/subject/mikycftx.html