簡體   English   中英

用於檢查互聯網連接的 Linux bash 腳本不起作用

[英]Linux bash script to check internet connection not working

我想在我的樹莓派上使用 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

嘗試這個:

x=`ping -c1 google.com 2>&1 | grep failure`
if [ ! "$x" = "" ]; then
echo "Network isn't present"
sudo shutdown -r 0
exit 1
fi

或者對於您的腳本,我會這樣做:

if [[ "$(ping -c 1 8.8.8.8 | grep '100% packet loss' )" != "" ]]; then
  echo "Internet isn't present"
  sudo shutdown -r 0
  exit 1
elif [[ "$(ping -c 1 8.8.8.8 | grep 'packet loss' | grep -o "1[0-9][0-9]\+%")" != "" ]]; then
  echo "Network isn't present"
  sudo shutdown -r 0
  exit 1
else
  echo "Internet is present"
  exit 0
fi

但我建議使用 /sys/class/net 代替

# Test for network conection
for interface in $(ls /sys/class/net/ | grep -v lo);do
if [[ $(cat /sys/class/net/$interface/carrier) = 1 ]]; then OnLine=1;fi;done
if ! [ $OnLine ]; then echo "Internet isn't present" > /dev/stderr;sudo shutdown -r 0; exit; fi

立即返回結果:

$ net lookup example.com

`Didn't find example.com#20`

$ net lookup example.com

`93.184.216.34`

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM