ฉันจะตรวจสอบการเชื่อมต่ออินเทอร์เน็ตในคอนโซลได้อย่างไร


31

มีวิธีง่าย ๆ ในการตรวจสอบการเชื่อมต่ออินเทอร์เน็ตจากคอนโซลหรือไม่ ฉันพยายามที่จะเล่นในสคริปต์เชลล์ แนวคิดอย่างหนึ่งที่ฉันเห็นคือและตรวจสอบรหัสตอบกลับ HTTP เพื่อตีความว่าการเชื่อมต่ออินเทอร์เน็ตทำงานได้ดีหรือไม่ แต่ฉันคิดว่าต้องมีวิธีที่ง่ายโดยไม่จำเป็นต้องตรวจสอบไซต์ที่ไม่ผิดพลาด)wget --spider http://www.google.co.in/

แก้ไข:ดูเหมือนว่าอาจมีหลายปัจจัยที่สามารถตรวจสอบเป็นรายบุคคลสิ่งที่ดี ความตั้งใจของฉันในขณะนี้คือการตรวจสอบว่าบล็อกของฉันถูกลง ฉันมี cron ตั้งค่าเพื่อตรวจสอบทุกนาที สำหรับสิ่งนี้ฉันกำลังตรวจสอบรหัสตอบกลับ HTTP ของ wget --spider ไปยังบล็อกของฉัน หากไม่ใช่ 200 จะแจ้งเตือนฉัน (ฉันเชื่อว่านี่จะดีกว่าเพียงแค่ส่ง Ping ไปเนื่องจากไซต์อาจมีภาระมากและอาจหมดเวลาหรือตอบสนองช้าเกินไป) เมื่อวานนี้มีปัญหากับอินเทอร์เน็ตของฉัน LAN เชื่อมต่อได้ดี แต่ฉันไม่สามารถเข้าถึงเว็บไซต์ใด ๆ ได้ ดังนั้นฉันจึงได้รับการแจ้งเตือนอย่างต่อเนื่องเนื่องจากสคริปต์ไม่สามารถค้นหา 200 รายการในการตอบกลับ wget ตอนนี้ฉันต้องการตรวจสอบให้แน่ใจว่ามันแจ้งเตือนฉันเมื่อฉันมีการเชื่อมต่ออินเทอร์เน็ต

ดังนั้นการตรวจสอบการเชื่อมต่อ DNS และ LAN จึงเป็นเรื่องที่เกินความจำเป็นสำหรับฉันเนื่องจากฉันไม่จำเป็นต้องระบุปัญหามาก ดังนั้นคุณแนะนำอะไรฉันจะทำอย่างไร

นี่คือสคริปต์ของฉันเพื่อตรวจสอบการหยุดทำงานสำหรับบล็อกของฉัน:

#!/bin/bash

# Sending the output of the wget in a variable and not what wget fetches
RESULT=`wget --spider http://blog.ashfame.com 2>&1`
FLAG=0

# Traverse the string considering it as an array of words
for x in $RESULT; do
    if [ "$x" = '200' ]; then
        FLAG=1 # This means all good
    fi
done

if [ $FLAG -eq '0' ]; then
    # A good point is to check if the internet is working or not
        # Check if we have internet connectivity by some other site
        RESULT=`wget --spider http://www.facebook.com 2>&1`
        for x in $RESULT; do
            if [ "$x" = '200' ]; then
                FLAG=1 # This means we do have internet connectivity and the blog is actually down
            fi
        done

    if [ $FLAG -eq '1' ]; then
        DISPLAY=:0 notify-send -t 2000 -i /home/ashfame/Dropbox/Ubuntu/icons/network-idle.png "Downtime Alert!" "http://blog.ashfame.com/ is down."         
    fi  
fi

exit

วิธีนี้ฉันต้องตรวจสอบการเชื่อมต่ออินเทอร์เน็ตเฉพาะที่มีปัญหากับรหัสตอบกลับบล็อกของฉัน มันค่อนข้างหนัก (เพราะฉันไม่ได้ใช้ ping) แต่ไม่ควรให้ผลบวกใด ๆ ขวา? นอกจากนี้ฉันจะสุ่มส่ง Ping ไปยังเว็บไซต์อื่นทุกครั้งเช่น Facebook, Google, yahoo เป็นต้นได้อย่างไร (ฉันพยายามหลีกเลี่ยง I / O ใด ๆ ) ฉันสามารถเขียนลงในไฟล์บันทึกโดยที่ฉันสามารถตรวจสอบจำนวนการตรวจสอบการหยุดทำงานและ จากนั้นข้ามการตรวจสอบเพิ่มเติมจนกว่าไซต์จะหยุดทำงานหรือทำให้การตรวจสอบอีกต่อไป (10 นาทีแทนทุก ๆ นาที) คุณคิดอย่างไร?


"การเชื่อมต่ออินเทอร์เน็ต" ไม่มีคำจำกัดความที่ชัดเจนคุณสามารถทดสอบการเชื่อมต่อกับบริการเฉพาะหรือชุดบริการ หากคุณหมายถึงการเชื่อมต่อ "LAN" ตัวเลือกที่ดีคือการ ping เกตเวย์เครือข่ายของคุณ
João Pinto

ในแง่คนธรรมดาฉันจะกำหนดการเชื่อมต่ออินเทอร์เน็ตคือถ้าคุณสามารถเข้าถึงอินเทอร์เน็ต ปัญหาสามารถโดยอะไรในระหว่าง ฉันแค่ต้องแยกความแตกต่างระหว่างถ้ามันทำงานได้ดีหรือมีปัญหาจากชุดของปัญหาที่สามารถรับผิดชอบ ฉันหวังว่าฉันจะทำให้ตัวเองชัดเจน :)
Ashfame

คำตอบ:


29

ตรวจสอบว่ามีเว็บไซต์เฉพาะหรือไม่

ก่อนอื่นมีบริการตรวจสอบออนไลน์ที่ดีหลายรายการ ในการเลือกหนึ่งบัญชี Pingdom มีบัญชีฟรีสำหรับการตรวจสอบเป้าหมายเดียว (ข้อจำกัดความรับผิดชอบ: ฉันไม่ได้มีส่วนเกี่ยวข้องกับ Pingdom แต่อย่างใด)

ประการที่สองการใช้wget --spiderสคริปต์ของคุณเองเป็นความคิดที่ดี คุณจะได้รับผลบวกปลอมเมื่อคอมพิวเตอร์ของคุณหยุดทำงานหรือเมื่อเซิร์ฟเวอร์ DNS ของคุณไม่ทำงาน การตรวจสอบโค้ดส่งคืนเป็นวิธีที่ไม่ยุ่งยากในการใช้สิ่งนี้:

wget --spider --quiet http://example.com
if [ "$?" != 0 ]; then
  echo "Website failed!" | mail -s "Website down" your_email@provider.tld
fi

ยังมีข้อบกพร่องในวิธีการนี้อีกครั้ง หากผู้ให้บริการของคุณแคชระเบียน DNS ของคุณ แต่เซิร์ฟเวอร์ DNS ไม่ทำงานผู้อื่นจะไม่สามารถเข้าถึงไซต์ของคุณได้แม้ว่าการตรวจสอบจะบอกว่าทุกอย่างเรียบร้อยดี คุณสามารถเขียนวิธีแก้ปัญหาระยะสั้นด้วยยกตัวอย่างเช่นhost host example.com <your dns server IP>นั่นจะส่งคืนข้อผิดพลาดหากเซิร์ฟเวอร์ DNS ไม่ตอบสนองแม้ว่า OpenDNS หรือเซิร์ฟเวอร์ DNS ของผู้ให้บริการของคุณจะทำงานได้ดี

ตรวจสอบว่าอินเทอร์เน็ตทำงานหรือไม่

ไม่มีวิธีง่ายๆในการจัดการสิ่งนี้ในทุกกรณี

ตัวอย่างเช่นคุณสามารถเรียกใช้ping -c1ในเว็บไซต์ที่รู้จักกันดีหลายแห่ง (เช่น www.google.com, facebook.com และ ping.funet.fi) และตรวจสอบรหัสส่งคืนเพื่อตรวจสอบว่าปลายทางเข้าถึงได้หรือไม่ $?คุณจะสามารถตรวจสอบรหัสการส่งคืนโดยใช้ตัวแปร พารามิเตอร์-c1จำกัด จำนวนของแพ็กเก็ต ping ที่หนึ่ง

คุณอาจประสบปัญหากับบางสาธารณะ wifis เมื่อมีเกตเวย์เข้าสู่ระบบที่เปลี่ยนเส้นทาง pings และคำขอ HTTP ทั้งหมด ถ้าเป็นเช่นนั้นคุณอาจได้รับคำตอบ ping และรหัสสถานะ HTTP ที่ไม่ใช่ข้อผิดพลาดแม้ว่าคุณจะไม่สามารถเข้าถึงไซต์อื่น ๆ ได้ก็ตาม

หากคุณต้องการตรวจสอบสถานะเคเบิลคุณสามารถใช้

sudo ethtool eth0

จากเอาต์พุต (ตัดตอน):

Speed: 1000Mb/s
Duplex: Full
Port: Twisted Pair
Link detected: yes

อย่างไรก็ตามสิ่งนี้ไม่ได้บอกว่าคุณมีการเชื่อมต่อจริงหรือไม่เพียงแค่เชื่อมต่อสายเคเบิลและมีบางอย่างที่ปลายด้านหนึ่ง


ทั้งหมดนี้สำหรับการติดตั้งของฉันทำงานบน Always-ON Ethernet แต่ดีใจที่คุณชี้ให้เห็นว่ามันจะไม่ทำงานอย่างถูกต้องในบางกรณี นอกจากนี้ฉันเชื่อว่าการส่ง Ping จะเร็วกว่า wget คุณคิดอย่างไร? และถ้าฉันกำลังตรวจสอบรหัสสถานะ 200 ที่ใดก็ได้ฉันอยากจะกระตุกมัน ขวา? หรือมีบางสิ่งที่ฉันควรรู้
Ashfame

2
ping เร็วขึ้นและดีขึ้นเพราะส่วนอื่น ๆ จะไม่โกรธคุณ ping ค่อนข้างปลอดภัย แต่ไม่รับประกันว่าคุณจะสามารถเปิดเว็บเพจได้ นอกจากนี้อาจเป็นไปได้ว่าไฟร์วอลล์กำลังบล็อกการ ping แต่อนุญาตให้ร้องขอ HTTP
Olli

1
การ Ping เซิร์ฟเวอร์ dns ที่รู้จักกันดีเช่น 4.2.2.2 นั้นมีประโยชน์ในกรณีที่คุณมีการเชื่อมต่อเน็ต แต่ DNS ที่เสียหาย
djeikyb

สำหรับการตรวจสอบ DNS คุณสามารถใช้แน่นอนhost(แบบสอบถาม DNS) มันเร็วมากด้วย
Olli

ขอบคุณสำหรับการตอบกลับของคุณ @Olli & @djeikyb ฉันได้อัปเดตคำถามโปรดดู
Ashfame

7

ฉันใช้วิธีนี้ ...

ถ้า [["$ (ping -c 1 8.8.8.8 | grep 'การสูญเสียแพ็กเก็ต 100%')"! = ""]]; แล้วก็
    echo "ไม่มีอินเทอร์เน็ต"
    ทางออก 1
อื่น
    echo "อินเทอร์เน็ตมีอยู่"
    wget www.site.com
Fi

ผมได้ผลที่แตกต่างกันสำหรับการและping -c 1 8.8.8.8 ping -c 1 www.google.comมันเป็นอย่างไร
MERose

2
โปรดทราบว่าสิ่งนี้จะล้มเหลวในประเทศจีนและประเทศอื่น ๆ ที่บล็อก Google
Tom J Nowell

7

ฉันเพิ่งใช้

nm-online

ซึ่งหยุดชั่วคราวจนกว่าการเชื่อมต่อเครือข่ายจะปรากฏโดยผู้จัดการเครือข่าย ทำงานได้ดี คุณสามารถทำสิ่งอื่น ๆ ด้วยเช่นกัน


6

การตรวจสอบเพื่อดูว่าไซต์ทำงานปกติหรือไม่ด้วยเครื่องมือการตรวจสอบเช่น nagiosตรวจสอบเพื่อดูว่าเว็บไซต์เป็นขึ้นมักจะทำกับเครื่องมือตรวจสอบเช่นสิ่งนี้จะตรวจสอบเว็บไซต์อย่างต่อเนื่องและสามารถแจ้งให้คุณทราบถึงการหยุดทำงาน

เมื่อตรวจสอบว่าอินเทอร์เน็ตนั้นมาจากบรรทัดคำสั่งหรือไม่ฉันใช้ขั้นตอนหลายขั้นตอน:

  • ตรวจสอบอินเทอร์เน็ตไม่ทำงานping google.com(ตรวจสอบ DNS และเว็บไซต์ที่รู้จักได้)
  • ตรวจสอบว่าเว็บไซต์ใช้งานไม่ได้wgetหรือw3mเพื่อดึงหน้าเว็บ

หากอินเทอร์เน็ตไม่ได้วินิจฉัยออกไปด้านนอก

  • ตรวจสอบเกตเวย์ได้ pingable (ตรวจสอบ ifconfig สำหรับที่อยู่เกตเวย์)
  • ตรวจสอบเซิร์ฟเวอร์ DNS ว่าสามารถส่ง Ping ได้ (ตรวจสอบ /etc/resolv.conf เพื่อหาที่อยู่)
  • ตรวจสอบว่าไฟร์วอลล์กำลังบล็อกอยู่หรือไม่ (ตรวจสอบ / var / log / syslog ขณะที่ฉันบันทึกบล็อก)

หากอินเทอร์เน็ตไม่ทำงาน แต่มีการตรวจสอบไซต์ด้วยการw3m http://isup.me/example.comแทนที่example.comด้วยไซต์ที่ปรากฏขึ้น ใช้ wget, lynx หรือเบราว์เซอร์บรรทัดคำสั่งที่คุณเคยใช้ได้ถ้าคุณไม่ได้ติดตั้งเบราว์เซอร์ w3m


ขอบคุณสำหรับคำแนะนำของคุณ! สคริปต์ของฉันครอบคลุมข้อกำหนดพื้นฐานของการตรวจสอบและแจ้งเตือนฉันเมื่อไซต์ของฉันหยุดทำงานหรือไม่ และมันจะเงียบในกรณีที่มีปัญหาการเชื่อมต่ออินเทอร์เน็ต
Ashfame

ดูเหมือนว่าสคริปต์ของคุณจะทำสิ่งที่คุณต้องการ คุณอาจรวมถึงคำสั่ง wget if ! wget --spider http:///example.com; thenในคำสั่งถ้าเป็น
BillThor

คุณหมายถึงว่า wget จะส่งคืน 1 เสมอสำหรับรหัสการตอบสนอง HTTP 200 หรือไม่
Ashfame

ผมหมายถึงการทดสอบเป็นเช่นเดียวกับการทดสอบ[ $? != 0 ] ! commandwget ได้รับการบันทึกไว้เพื่อคืนค่า 0 เมื่อสำเร็จและไม่ใช่ 0 สำหรับความล้มเหลว ถ้าพฤติกรรมเหมือนกันซึ่งเป็นวิธีที่คุณเคยรหัสมัน หาก wget ส่งคืนความล้มเหลวเมื่อตอบกลับ 200 ครั้งการทดสอบจะล้มเหลวในแบบของคุณ เช่นเดียวกันถ้าส่งคืน 0 สำหรับรหัสการตอบสนองอื่นที่ไม่ใช่ 200
BillThor

ขอบคุณ! นั่นจะทำให้สคริปต์มีขนาดเล็กลงและเข้าใจง่าย
Ashfame

4

นี่คือ shell srcript ที่ฉันใช้ทดสอบการเชื่อมต่ออินเทอร์เน็ต:

alarm.sh

#! /bin/bash

if curl --silent --head http://www.google.com/ |
    egrep "20[0-9] Found|30[0-9] Found" >/dev/null
then
    echo Internet status: OK
else
    echo Internet status: ERROR
    mpg321 alarm.mp3 &> /dev/null
fi
sleep 60
clear

./alarm.sh

คุณจะต้องติดตั้ง curl และ mpg321

sudo apt-get install curl mpg321

คุณจะต้องเปลี่ยนชื่อไฟล์เสียง. mp3 เป็น alarm.mp3 ในโฟลเดอร์เดียวกันหากคุณต้องการฟังก์ชั่นการเตือนด้วยเสียง ในที่สุดกำหนดค่า URL เว็บไซต์และ egrep ตามความต้องการของคุณ


มันทำงานได้อย่างสมบูรณ์แม้ในขณะที่ผู้ใช้อยู่หลังพอร์ทัลผู้ถูกจับกุมและไม่ได้เข้าสู่ระบบ
Ashhar Hasan

คุณสามารถใช้egrep -qแทนegrep ... > /dev/null
wjandrea

ทำไมสคริปต์เรียกตัวเองแทนที่จะใช้แค่whileวนซ้ำ
wjandrea

โอ้เดี๋ยวก่อนมันไม่ได้เรียกตัวเอง มันเรียกสคริปต์ที่เรียกว่าalarm.shใน wd ดังนั้นถ้าคุณเรียกใช้สคริปต์นี้จาก dir อื่นมันจะเกิดข้อผิดพลาดหรือถ้ามีสคริปต์ที่ถูกเรียกalarm.shใน wd มันจะเรียกมันว่าแทน นั่นคือการปฏิบัติที่ไม่ดี คุณสามารถใช้"$0"แทนได้ แต่การwhileวนซ้ำจะดีกว่า
wjandrea

"ทำไมสคริปต์เรียกตัวเองแทนที่จะใช้เพียงลูป while": เพราะฉันเป็นโนเบลเมื่อฉันสร้างโพสต์นั้นและใช่สคริปต์นั้นกำลังเรียกตัวเอง
01BTC10

2

ตรวจสอบว่าอินเทอร์เน็ตทำงานหรือไม่

sudo nm-tool | grep "State: connected" | wc -l

จากเอาต์พุต (ตัดตอน):

1 #System is connected to internet

อย่างไรก็ตามดังที่คนอื่น ๆ พูดถึงนี่ไม่ได้บอกว่าคุณมีการเชื่อมต่อหรือไม่ เช่น. คุณสามารถเชื่อมต่อกับเราเตอร์และเราเตอร์ไม่จำเป็นต้องเชื่อมต่อกับอินเทอร์เน็ต


2
nm-toolถูกลบใน Ubuntu 15.04+ แต่คุณสามารถใช้nmcliแทนได้ เช่น[[ $(nmcli -f STATE -t g) = connected ]]
หก

@ หกnmcli -f STATE -t nmสิ่งที่ดีคือการเป็นอิสระจากเว็บไซต์!
อำนาจกุมภ์

1
โปรดทราบว่าnm-toolและnmcliจะแจ้งให้คุณทราบเท่านั้นว่าคุณเชื่อมต่อกับเครือข่ายท้องถิ่นหรือไม่หรือคุณกำลังเชื่อมต่อกับ wifi / ethernet ในบ้านของคุณหรือไม่ มันจะไม่บอกคุณว่าคุณสามารถเข้าถึงอะไรก็ได้นอกเหนือจากเครือข่ายท้องถิ่นของคุณเช่นอินเทอร์เน็ต
Sergiy Kolodyazhnyy

1

ฉันใช้วิธีนี้:

if curl -s --head  --request GET www.google.com | grep "200 OK" > /dev/null ; then
    echo "Internet is present"
else
    echo "Internet isn't present"
fi

มันจะพยายามเชื่อมต่อกับเว็บไซต์ที่รู้จักกันดีและหากมันสามารถเชื่อมต่อกับมันได้เราจะสมมติว่ามีอินเทอร์เน็ต


0

ฉันต้องการความช่วยเหลือด้วยคำถามเดียวกันและฉันได้รับคำตอบด้วยวิธีนี้:

echo $(nm-online) $? connection problems

มันทำงานอย่างไร
wjandrea

มันเป็นเพียงการตรวจสอบสถานะ (ตัวละครหนึ่งตัว) ของnm-onlineคำสั่ง ... มันจะคืนค่า 0 ถ้าทุกอย่างเรียบร้อย ปกติในทุกUNIXเชลล์
Antonio

0

การตรวจสอบว่าอินเทอร์เน็ตใช้งานได้ดีหรือไม่ ping คือ ICMP ดังนั้นจึงอาจใช้งานได้แม้ว่าเว็บพรอกซีไม่ทำงาน สิ่งที่คล้ายกันเกิดขึ้นกับ DNS ถ้าคุณทดสอบด้วย IP

เนื่องจากการเชื่อมต่ออินเทอร์เน็ตของฉันไม่เสถียรฉันจึงสร้างสคริปต์นี้ ( โดยอิงจากสิ่งนี้ ) ที่ทำให้เสียงคอร์ดอ่อนโยนเพื่อโทรหาฉันและยังใช้ Ubuntu แจ้งเตือนเมื่อการเชื่อมต่ออินเทอร์เน็ตกลับมา:

#!/bin/bash

hash play 2>&- || { echo >&2 "I require «play» but it's not installed. Try apt-get install sox. Aborting."; exit 1; }

WGET="`which wget`"
URL="http://www.google.com"
delay=3;
noConnectionMessage="No connection, trying again in $delay seconds...";
connectionMessage="WE HAVE INTERNET! :) Trying again in $delay seconds...";

echo "INTERNET TESTER: Type Ctrl+C to quit";
rm --force /tmp/index.site

function playSound {
    time=1;    # Time played
    if [ `sox --version| grep -oP "v[0-9.]+" | sed "s/[v.]//g"` -lt 1431 ]; then    #analize sox version, if greater than v14.3.1 can use pluck
        play -q -n synth $time sine;
    else
        play -q -n synth $time pluck $1;
        #for i in G4 G4 G4 E4;do play -n synth 0.1 pluck $i repeat 2;done    # You can play with something like this also :) (first three notes from Beethoven 5th symphony)
    fi
}

while [ 1 -eq 1 ]; do
    $WGET -q --tries=10 --timeout=2 $URL -O /tmp/index.site &> /dev/null
    if [ ! -s /tmp/index.site ];then
        echo $noConnectionMessage;
        #playSound E2
        sleep 1;
    else
        #~ zenity --warning --text "ADDRESS is back"
        notify-send -i "notification-network-wireless-full" "Connection state:" "$connectionMessage";
        echo $connectionMessage;
        playSound E3
    fi
    sleep $delay;
done

exit 0;

0

ฉันกำลังมองหาสคริปต์ที่จะทดสอบการเชื่อมต่ออินเทอร์เน็ตของฉันอย่างต่อเนื่องซึ่งจะเริ่มขึ้นเมื่อเซิร์ฟเวอร์ของฉันหมดและฉันทำสิ่งนี้:

  1. ก่อนอื่นให้ติดตั้ง fping

    apt-get install fping
    
  2. สร้างสคริปต์เริ่มต้นในโฟลเดอร์ /etc/init.d ด้วยเนื้อหาต่อไปนี้ (ฉันเรียกว่า testcon)

    #!/bin/bash
    
    PIDFILE=/var/run/testcon.pid
    
    . /lib/lsb/init-functions
    
    case "$1" in
      start)
            log_daemon_msg "Starting internet connection tester"
            /etc/init.d/testcond &
            echo $! > $PIDFILE
            log_end_msg $?
        ;;
      stop)
            log_daemon_msg "Stopping internet connection tester"
            PID=$(cat $PIDFILE)
            kill -9 "$PID"
            log_end_msg $?
        ;;
      *)
        echo "Usage: /etc/init.d/testcon {start|stop}"
        exit 1
        ;;
    esac
    
    exit 0
    
  3. สร้างสคริปต์ในโฟลเดอร์ /etc/init.d ด้วยเนื้อหาต่อไปนี้ (ฉันเรียกว่า testcond)

    #echo Computer starting or testing daemon init
    while [ "$itest" == "" ] 
    do
        #wait 5 seconds 
        sleep 5
        itest=$(fping 8.8.8.8 | grep alive)
    done
    date | mail -s "Server is up and Internet is online" your_email@gmail.com
    
    #loop forever
    while [ "1" == "1" ] 
    do
        itest=$(fping 8.8.8.8 | grep alive)
        #if internet is down
        if [ "$itest" == "" ] 
        then
            #echo Internet is down
            #log time it was found down
            current_time=$(date)
            echo "Internet was found down @ $current_time" >> /mnt/data/Server/internet_log.txt
            #loop until it is back
            while [ "$itest" == "" ] 
            do
                #wait 60 seconds 
                sleep 60
                itest=$(fping 8.8.8.8 | grep alive) # test the internet
            done
            #when it is back
            current_time=$(date)
            echo "Internet is back        @ $current_time" >> /mnt/data/Server/internet_log.txt
            body=$(tail -2 /mnt/data/Server/internet_log.txt)
            echo "$body" | mail -s "Internet is back online" your_email@gmail.com
        fi
        #echo Internet is online
        #wait 60 seconds
        sleep 60
            done
    
  4. จากนั้นฉันเรียกใช้คำสั่งด้านล่างเพื่อเพิ่มในการเริ่มต้น:

    sudo update-rc.d testcon defaults
    sudo update-rc.d testcon enable
    
  5. Reboot


0

ฉันต้องเผชิญกับหยดของการเชื่อมต่อ Wi-Fi แบบสุ่มโดยของฉัน Broadcom BCM94331CDชิปฉันคิดค้นสคริปต์ทุบตีต่อไปนี้ (วนซ้ำไม่สิ้นสุด) ตรวจสอบทุกวินาทีหากการเชื่อมต่ออินเทอร์เน็ต Wi-Fi เปิดใช้งาน บรรทัดคำสั่งอื่น ๆ ที่นำเสนอที่นี่จะรออย่างน้อย 5 ถึง 10 pingวินาทีก่อนที่จะปิดที่มีสถานะเช่น ในช่วงเวลาที่ฉันกำลังมองหาวิธีการแก้ปัญหาที่ชัดเจนเช่นกัน

จากผลลัพธ์บน Askubuntu ฉันจะต้องกำจัดbcmwl-kernel-sourceแพ็คเกจตามที่ใช้firmware-b43-installerb43-fwcutterและ

ขอบคุณทุกคนสำหรับคำแนะนำ (ด้านบน)

ต้องเพิ่มสคริปต์นี้ในโปรแกรมเริ่มต้นและไม่ต้องการsuper userสิทธิ์พิเศษในการทำงานเช่นกัน

#!/bin/bash
#

# Check if Wi-Fi is disabled e.g. 'out of range'
# If so quickly re-enable Wi-Fi
# Due to a problem with Broadcom proprietary driver in package firmware-b43-installer

# Script is part of Start-Up programs
# Stored in /usr/local/bin/
# Infinite loop checking every second if Wi-Fi is up and running

while true; do
  # https://askubuntu.com/questions/27954/how-can-i-check-internet-connectivity-in-a-console
  if [[ $(nmcli -f STATE -t g) != 'connected' ]]; then
    # Disable and Re-Enable Wi-Fi as the Wi-Fi is now 'out of range' (disconnected)
    nmcli radio wifi off
    nmcli radio wifi on
  fi
  sleep 1
done
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.