linux捕获shell命令,Linux下shell脚本中信号捕获和函数练习脚本之ping一个网段

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

脚本功能:

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

练习的命令:

1、mktemp

用法:#mktemp /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 /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试试看效果哦!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值