该脚本主要的目的是练习在Linux bash脚本中捕获信号,顺便练习一下函数的使用,还有就是终止一个正在运行的程序后,该程序打开的文件的后续处理问题等等!

脚本功能:

  ping一个网段内的IP,检测哪些IP在线,哪些IP不在线

练习的命令:

1、mktemp

  用法:#mktemp 1117.www.qixoo.qixoo.com/Path/To/SomeFile.XXX 其中XXX可以为多个,是由系统随机生成的一段字符串

          -d  创建为目录

2、ping 测试网络是否通畅

  用法:#ping [-c #] [-W N] IP

         -c # ,#表示指定ping的次数

         -W N,N表示指定超时时间

3、trap 捕获信号

  用法:#trap ‘COMMAND‘ SIGN_Table

   常用信号有:

           1:SIGHUP   作用:使一个进程重读配置文件而不用重启进程

           2:SIGINT   作用:中断一个进程,Ctrl+C 发送的就是该信号

           9:SIGKILL  作用:无论如何都要杀死一个进程,相对于15号信号

           15:SIGTERM  作用:会让其把自己相关事务处理好后再杀死该进程

           18:SIGCONT  作用:使一个停止的进程继续进行

           19:SIGSTOP  作用:使一个进程停止作业,Ctrl+z发送的就是该信号

4、tee 读取标准输入的数据,并将其内容输出到文件

  用法:tee [-a] /Path/To/SomeFile

          -a :表示附加到既有文件的后面,而非覆盖它.

  说明:tee指令会从标准输入设备读取数据,将其内容输出到标准输出设备,同时保存到文件。

    !/bin/bash
    NET=192.168.1
    FILE=`mktemp qkxue.net/tmp/file.XXXXXX`

    cleanup(){
    echo "Quiting..."
    rm -f $FILE
    exit 1
    }
    trap ‘cleanup‘ INT
    for I in {1..254};do
      if ping -c 1 -W 1 $NET.$I &> /dev/null; then
         echo -e "\033[32m$NET.$I is up\033[03m" | tee -a $FILE
      else
         echo -e "\033[31m$NET.$I is down\033[03m"
      fi
    done

    有兴趣的朋友,可以把这里调试一下,在ping的过程中按Ctrl+c试试看效果哦!

Linux下shell脚本中信号捕获和函数练习脚本之ping一个网段的更多相关文章

  1. [转] linux下shell中使用上下键翻出历史命名时出现^[[A^[[A^[[A^[[B^[[B的问题解决,Linux使用退格键时出现^H解决方法

    [From] https://www.zmrbk.com/post-2030.html https://blog.csdn.net/suifengshiyu/article/details/40952 ...

  2. linux 下shell 编写脚本

    linux 下shell 编写脚本: 1.程序结构练习:编写一个脚本,给定一个正整数,计算出这个数所有位的数字之和. 例如:程序给定输入123,那么应该返回1+2+3=6. 2.程序结构练习:编写一个 ...

  3. Linux下shell通用脚本启动jar(微服务)

    Linux下shell通用脚本启动jar(微服务) vim app_jar.sh #!/bin/bash #source /etc/profile # Auth:Liucx # Please chan ...

  4. Linux 下Shell的学习

    1.Shell学习 1.什么是Shell    shell是一个命令解析器,在操作系统的最外层,负责和用户对话,将用户的输入解释给操作系统,并处理各种各样的操作系统的输出结果.2.什么是shell脚本 ...

  5. Shell 循环中实现展示进度百分比的脚本方法

    Shell 循环中实现展示进度百分比的脚本方法 当我需要处理一个几万行的文件的时候,需要处理的时间是比较长的.我一开始的想法是,没处理一行,就输出一个 # 号.但是这样还是会出现很多很多的 # 号,即 ...

  6. 06 Linux下Shell介绍

    一.概述 每个人在成功登陆Linux后,系统会出现不同的提示符号,例如$,~,#等,然后你就可以开始输入需要的命令.若命令正确,系统就会依据命令的要求来执行,直到注销系统为止,在登陆到注销期间,输入的 ...

  7. [转载]linux下编译php中configure参数具体含义

    编译N次了   原来这么回事 原文地址:linux下编译php中configure参数具体含义作者:捷心特 php编译参数的含义 ./configure –prefix=/usr/local/php ...

  8. Shell脚本中使用function(函数)示例

    这篇文章主要介绍了Shell脚本中使用function(函数)示例,本文着重讲解的是如何在shell脚本中使用自定义函数,并给出了两个例子,需要的朋友可以参考下   函数可以在shell script ...

  9. .Neter玩转Linux系列之四:Linux下shell介绍以及TCP、IP基础

    基础篇 .Neter玩转Linux系列之一:初识Linux .Neter玩转Linux系列之二:Linux下的文件目录及文件目录的权限 .Neter玩转Linux系列之三:Linux下的分区讲解 .N ...

随机推荐

  1. 迭代器模式的一种应用场景以及C#对于迭代器的内置支持

    迭代器模式 先放上gof中对于迭代器模式的介绍镇楼 意图 提供一种方法顺序访问一个聚合对象中各个元素, 而又不需暴露该对象的内部表示. 别名 游标(Cursor). 动机 一个聚合对象, 如列表(li ...

  2. HTTP Header详解(转载)

    HTTP Header详解 HTTP(HyperTextTransferProtocol)即超文本传输协议,目前网页传输的的通用协议.HTTP协议采用了请求/响应模型,浏览器或其他客户端发出请求,服务 ...

  3. GridView的 OnRowDataBound 事件用法

    <asp:GridView ID="RptUsers" runat="server" AutoGenerateColumns="False&qu ...

  4. CSS Bug

    父子标签间用margin的问题,表现在有时除IE(6/7)外的浏览器子标签margin转移到了父标签上,IE6&7下没有转移.测试代码: <body> <style type ...

  5. dmesg 显示内核消息

    显示内核消息 dmesg [options] dmesg 可以用来显示存储在内核环缓冲区中的消息 系统启动时,内核会用硬件和模块初始化的相关消息填充其环缓冲区.内核环缓冲区中的消息常常用于诊断系统问题 ...

  6. yii2搭建完美后台并实现rbac权限控制实例教程

    1.安装yii2 未安装的请参考yii2史上最简单式安装教程,没有之一 或者参考yii2实战教程之详细安装步骤 已安装的请继续看下一步操作 2.配置数据库 2.1 配置数据库 修改common/con ...

  7. android 开发之 百度地图的使用

    好久没写博客了,最近遇到个新需求 需要用到百度地图的基础地图,定位,理论上应该还会用到鹰眼的功能吧.具体还很难说.我现在 刚动工,就从头开始记录吧. 首先是先申请一个百度地图api的key 流程官网很 ...

  8. mailto: HTML e-mail 链接

    转载: http://www.haorooms.com/post/mailto_link_html 什么是mailto链接? mailto链接是一种html链接,能够设置你电脑中邮件的默认发送信息.但 ...

  9. extJS 创建类

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8&quo ...

  10. 从库查看状态的时候显示“ Last_Error”

    mysql> show slave status\G;*************************** 1. row ***************************         ...