• ping脚本--无网不利


    一、本文主要涉及的内容

    二、预备知识

    1、打印网络接口列表

    2、提取IP地址的小套路

    3、更改网卡的MAC地址

    4、高速的ping工具:fping

    三、套路连招

    1、通过一个for循环和ping列出所有活动的主机

    2、通过for循环和arping列出所有活动的主机

    3、通过for循环、并行ping列出所有活动的主机

    一、本文主要涉及的内容

    l  预备知识

    l  套路连招

    二、预备知识

    1、打印网络接口列表

    下面这是原始的显示

    我们想要的显示效果是这样的,如下所示:

    eth0
    
    lo

    怎么办呢?

    我们首先看到,eth0和lo这两串字符都是位于每一行的最开始的位置,大约是前10个字符的位置,所以我们可以使用列切割工具,切割每一行的前10个字符,也就是通过字符切割。我们用cut的时候经常用的是通过定界符切割,其实cut可以通过三种方式对文本进行切割,如下所示:

    -b, --bytes=LIST    #通过字节切

    -c, --characters    #通过字符切

    -d, --delimiter=DELIM  #通过定界符切

    我们需要的是通过字符切,也就是通过-c选项,切出每一行的前10个字符,效果如下所示:

    [root@centos6-1 ~]# ifconfig | cut -c -10 eth0                                                                                     lo

      如上所示,切完了之后,出现了一个大量的空行,我们只要把这些空行给压缩一下了不就好了吗?于是我们使用tr选项当中的-s选项:-s, --squeeze-repeats 挤压重复行,效果如下所示

     

      结果是没有效果,空行并没有被挤压到一起,为什么?其实通过cut -A选项,也就是显示每一行里面所有的字符,可以看出来,这些行并不是真的空行,而是假的空行,因为行里面有空格,如下所示:

      所以,我们要挤压重复行之前要先把每一行的里面空格给删除掉,如何删除呢?通过tr -d 即可删除,效果如下所示:

       最后,我们再通过挤压重复行即可实现最终的效果,如下所示:

    2、提取IP地址的小套路

    第一种方法:最笨的方法,四条命令实现

     ifconfig eth0 | sed -n 2p | cut -d: -f2 | cut -d' ' -f1 192.168.80.126

    解释一下,先是只显示第二行,然后以冒号为分隔符显示第二列,最后以空格为分隔符显示第一行。

    第二种方法:稍微高级一点,用了一个awk

    ifconfig eth0 | awk -F: '{if(NR==2)print $2}' | cut -d' ' -f1 192.168.80.126

    解释一下awk,-F以冒号为分隔符,{if(NR==2)print $2}的意思是对第二个进行操作,然后打印出第二列。

    第三种方法:稍微高级一点,用了一个egrep,搞明白egerp之间要搞清楚通配符和扩展的通配符。

    ifconfig eth0 | egrep -o "inet addr:[^ ]*" | grep -o "[0-9.]*" 192.168.80.126

    解释一下,egrep -o "inet addr:[^ ]*"会打印出inet addr:192.168.80.126,-o是指定模式,模式以inet addr:作为初始,以非空字符作为序列,[^ ]*代表结束的模式以非空且任意字符结尾。在接下来的管道当中,只打印数字和点号的组合。

    3、更改网卡的MAC地址

    ifconfig eth0 hw ether 00:0C:29:73:B7:D8

    有什么用呢?我们在突破ARP绑定或者做ARP欺骗的时候会用到,重启失效。

    4、高速的ping工具:fping

    安装:

    >yum -y groupinstall "Development tools" 
    
    wget http://fping.org/dist/fping-3.15.tar.gz
    
    > tar -zxvf fping-3.15.tar.gz
    
    > cd fping-3.15
    
    > ./configure --prefix=/usr/local/fping            #指定安装路径 > make > make install

    配置:

     vim /etc/profile #在最后面添加 export PATH=$PATH:/usr/local/fping/sbin > source /etc/profile

    使用:

    -a打印出所有的主机,-g指定一个范围。

    fping -a 192.168.80.1/24 -g 2>/dev/null #指定网段 192.168.80.1192.168.80.126192.168.80.254
    
    fping -a 192.168.80.1 192.168.80.10 -g 2>/dev/null  #手动指定范围

    fping < ./test.txt    #也可以从文件当中接收

    三、套路连招

    1、通过一个for循环和ping列出所有活动的主机

    #!/bin/bash #列出所有活动的主机

    其实这个脚本只是一个雏形,它还可以做很多的变动,比如将ping换成arping,这在KALI LINUX可以用到;再比如这是串行ping,用的时候比较慢,我们还可以做一个并行ping,我们后续会做一些讲解。

    2、通过for循环和arping列出所有活动的主机

    #!/bin/bash #列出所有活动的主机 

    这个脚本看起来与第一个没有什么太多的不同,但底层实现原理变化了,arping并不是使用ICMP协议,而是使用ARP协议,ARP的探测更有效、更彻底.

    注意:arping在KALI LINUX用的比较多。

    3、通过for循环、并行ping列出所有活动的主机

    解释一下,第一个脚本是串行执行的,而这个脚本使用()&,括号里面的内容会被放入到后台进行执行。要想等到所有子进程结束之后再终止脚本,就得使用wait命令。将wait放在脚本最后,它就会一直等到所有的后台进程全部结束。

  • 相关阅读:
    读《豆瓣的基础架构》有感
    读《【解密】京东B2B业务架构演变》有感
    soa
    读《京东咚咚架构演进》有感
    读《游戏服务器的架构演进(完整版)》有感
    读《京东物流系统架构演进中的最佳实践》有感
    读《微博众筹的架构设计》有感
    读《新浪微博如何应对极端峰值下的弹性扩容挑战》有感
    读《微博推荐架构的演进》有感
    读《新浪微博用户兴趣建模系统架构》有感
  • 原文地址:https://www.cnblogs.com/yizhangheka/p/11634438.html
Copyright © 2020-2023  润新知