gpt4 book ai didi

用于检查互联网连接不工作的 Linux bash 脚本

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:02:57 26 4
gpt4 key购买 nike

我想在我的树莓派上使用 bash 脚本来检查互联网连接是否仍然存在。

我找到了这个我扩展的脚本:

#!/bin/bash

# I do not work properly
if [[ "$(ping -c 1 8.8.8.8 | grep 'Network is unreachable' )" != "" ]]; then
echo "Network isn't present"
sudo shutdown -r 0
exit 1
fi

# I work properly
if [[ "$(ping -c 1 8.8.8.8 | grep '100% packet loss' )" != "" ]]; then
echo "Internet isn't present"
sudo shutdown -r 0
exit 1
else
echo "Internet is present"
exit 0
fi

第二部分效果不错,但第一部分效果不佳。

我拔下以太网电缆并收到一条错误消息,如 connect: Network is unreachable。所以正如预期的那样。但我不明白为什么我的脚本没有接收到它?我认为这与它是错误消息而不是输出有关。但我不知道如何调整我的脚本以从错误消息中获取 grep,假设这是正确的。

我找到了一种方法,通过使用此行 ping -c 1 8.8.8.8 2>>(grep 'unreachable';) 来让 grep 注册输出。但是,这仍然会使我的脚本失败,因为该行的其余部分不再识别它。而且我也不完全理解 2>>() 的作用。

最佳答案

这里你真的不需要字符串比较:

ping 命令在完成执行后给出适当的返回代码。

所以,你可以使用类似的东西:

 function check_connectivity() {

local test_ip
local test_count

test_ip="8.8.8.8"
test_count=1

if ping -c ${test_count} ${test_ip} > /dev/null; then
echo "Have internet connectivity"
else
echo "Do not have connectivity"
fi
}

check_connectivity

关于用于检查互联网连接不工作的 Linux bash 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55385534/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com