使用ping命令进行连通性校验的shell脚本

本文介绍使用Shell脚本进行网络监控的方法,包括通过ping命令检查远程主机可达性,并根据结果重启守护进程或整个系统。此外,还展示了如何批量检查一系列IP地址的状态。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

#!/bin/sh

IP="10.10.100.1"

kill_deamon() {

	/etc/init.d/deamon stop
}

start_deamon(){
	/etc/init.d/deamon start
}


check_ping() {

local total="0"
local i="0"

while [ $i -lt 10 ]; do

	local line=""
		#echo "ping $IP"
		line=`ping $IP -c 1 -s 1 -W 1 | grep "100% packet loss" | wc -l`
		
		if [ "${line}" != "0" ]; then
			echo "ping failed!"
			total=$((total+1))
		else
			echo "ping ok!"
			total="0"
		fi
			i=$((i+1))
			sleep 1
	done

	if [ $total -gt 5 ]; then
		echo "check failed!"
		return 1
	else 
		echo "check ok!"
		return 0
	fi
}


start(){

local rtl=""
	while [ 1 ]; do
		check_ping
		rtl=$?
		
		if [ "$rtl" != "0" ]; then
			echo " restart deamon start "
			kill_deamon
			start_deamon
		else
			sleep 600;
		fi
	done
}

start

其它的也有这样的,如下,都是用一个循环去判断而已:

#!/bin/sh

line="0"
total="0"
dst=`uci get network.mesh.gateway`

while [ 1 ]; do
	line=`ping $dst -c 1 -s 1 -W 1 | grep "100% packet loss" | wc -l`
	if [ "${line}" != "0" ]; then
		total=$((total+1))
	else
		total="0"
	fi

	if [ "${total}" == "5" ]; then
		reboot -f
	fi

	sleep 12
done

另外一个:

#!/bin/bash

for siteip in $(seq 1 254)do
    site="192.168.1.${siteip}"
    ping -c1 -W1 ${site} &> /dev/null
    if [ "$?" == "0" ]; then
        echo "$site is UP"
    else
        echo "$site is DOWN"
    fi
done

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Leekwen

您的鼓励,是我坚持更新的动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值