linux中间隔10ping一次脚本,linux脚本每隔几分钟ping指定ip如不通向指定手机发送短信...

#!/bin/bash

#ping 2分钟结果存入文件

#var 1.0

#LX 2009年4月6日

#help function

help()

{

cat << HELP

============= ping120s.sh help =============

ping目标地址,存入文件。 配合crontab用

USAGE:

-h 显示帮助

-to IP ping的IP地址

-sh 检查历史是否有丢包

-show 检查详细历史

-gz 压缩以前的记录,并删除txt文件

-of dir 指定输出文件的位置(要求绝对目录),也可以指定文件名(不建议)

HELP

}

#简略输出结果的函数

shmin()

{

for fName in PING__*.txt

do

var=$(sed -n '/.*packets.*/p' $fName | sed 's/.*received,//g' | sed 's/, time.*//g')

var="$(sed -n '/2009_.*/p' $fName) ==>$var"

echo "$var"

var=""

done

}

toGz()

{

gzName=ALL_$(date +%Y年%m月%d日%k时).tar.gz

gzName=`echo "$gzName" | sed 's/ /0/g'`

tar cvfz "$gzName" *.txt

[ ! -d old ] && mkdir old

[ ! -d tmp ] && mkdir tmp

mv $gzName old/ && mv *.txt tmp/

}

############## main ###############

[ -z $1 ] && { echo "参数错误"; help; exit 1; }

#fileName=ping__$1__$(date +%m月%d日%k:%M)

#删除文件名中的空格, 不删除的话0点到10点之前都没法记录 日亚终于找到毛病了

#fileName=`echo "$fileName" | sed 's/ /0/g'`

#echo $fileName

TIMEOUT=30

while [ -n "$1" ]; do

case "x$1" in

x-h) help; exit 0;;

x-to)

shift

[ -z "$1" ] && { echo "参数错误"; help; exit 1; }

pingTo="$1"

shift

;;

x-sh) shmin; exit 0;;

x-show) clear; tail -n 3 PING__*.txt; exit 0;;

x-gz) toGz; exit 0;;

x-of)

shift

[ -z "$1" ] && { echo "参数错误"; help; exit 1; }

ofilename="$1"

shift

;;

*) echo "error"; help; exit 1 ;;

esac

done

#-to是必须参数,ping到那里

[ -z "$pingTo" ] && { echo "-to 参数必选之参数"; help; exit 1; }

#判断存数文件的中间名

if [ -z "$ofilename" ] || [ -d "$ofilename" ]; then

mfileName=$pingTo

else

mfileName=${ofilename##/*/}

fi

#生成存储文件的名称,如没有sed那句过了夜里12点0点开头到9点都无法存储,应为有个空格 日!

fileName=PING__"$mfileName"__$(date +%m月%d日%k:%M)

fileName=`echo "$fileName" | sed 's/ /0/g'`

#存储的目录判断,默认是$PWD,主要是判断绝对目录开头的/和结束的/

dirName="$PWD/"

if [ "x${ofilename%${ofilename#?}}" = "x/" ]; then

if [ -d "$ofilename" ]; then

dirName="$ofilename"

[ "x${ofilename#${ofilename%?}}" = "x/" ] || dirName="$dirName/"

elif [ -d "${ofilename%/*}" ]; then

dirName="${ofilename%/*}/"

fi

fi

#echo $fileName

#echo $dirName

echo "$(date +%Y_%m_%d__%H:%M)" > "$dirName$fileName.txt"

ping "$pingTo" -n -w "$TIMEOUT" >> "$dirName$fileName.txt"

wait

bash sms.sh "$pingTo" 2>>sms.log

exit 0

下面是发短信脚本 sms.sh

lx@lx-Linux:~/bash/lx/ping$ cat sms.sh

#!/bin/bash

data=$(sh ping120s_V1.sh -sh| awk -F"[% ]" '{print $3}'|tac)

data=$(echo $data | awk '{print $1,$2}')

shijian=$(date +%Y年%m月%d日%k时%M分|sed 's/ *//g')

if [ -z $1 ]

then

address=""

else

address="$1"

fi

#echo $data

#echo $shijian

#data="40 $data"

for i in $(echo $data)

do

# echo "-->$i"

if [ $i -ge 40 ]

then

# echo "$i>=40"

sms -f 手机号码 -p 飞信密码 -t 发送给那个手机 -m "To:$address $i% loss -- $shijian" >>sms.log

wait

echo "To:$address $i% loss -- $shijian" >>sms.log

# bash ping120s_V1.sh -gz

exit 9

else

# echo "$i<40"

:

fi

done

exit 0

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值