Có cách nào dễ dàng để kiểm tra kết nối Internet từ bàn điều khiển không? Tôi đang cố gắng để chơi xung quanh trong một kịch bản shell. Một ý tưởng tôi dường như là và kiểm tra mã phản hồi HTTP để giải thích nếu kết nối Internet hoạt động tốt. Nhưng tôi nghĩ rằng phải có cách dễ dàng mà không cần kiểm tra một trang web không bao giờ bị sập;)wget --spider http://www.google.co.in/
Chỉnh sửa: Có vẻ như có thể có rất nhiều yếu tố có thể được kiểm tra riêng lẻ, điều tốt. Ý định của tôi lúc này là kiểm tra xem blog của tôi có bị hỏng không. Tôi đã thiết lập cron để kiểm tra nó mỗi phút. Đối với điều này, tôi đang kiểm tra mã phản hồi HTTP của wget --spider cho blog của tôi. Nếu nó không phải 200, nó thông báo cho tôi (tôi tin rằng điều này sẽ tốt hơn là chỉ ping nó, vì trang web có thể bị tải nặng và có thể hết thời gian hoặc phản hồi rất muộn). Bây giờ ngày hôm qua, có một số vấn đề với Internet của tôi. LAN đã được kết nối tốt nhưng tôi không thể truy cập bất kỳ trang web nào. Vì vậy, tôi tiếp tục nhận thông báo vì tập lệnh không thể tìm thấy 200 trong phản hồi wget. Bây giờ tôi muốn đảm bảo rằng nó sẽ hiển thị thông báo cho tôi khi tôi có kết nối internet.
Vì vậy, việc kiểm tra kết nối DNS và LAN là hơi quá đối với tôi vì tôi không có nhu cầu cụ thể đó để tìm ra vấn đề gì. Vì vậy, những gì bạn đề nghị làm thế nào tôi làm điều đó?
Đây là kịch bản của tôi để tiếp tục kiểm tra thời gian chết cho blog của tôi:
#!/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
Bằng cách này, tôi chỉ cần kiểm tra kết nối internet khi có vấn đề với mã phản hồi blog của tôi. Nó hơi nặng (vì tôi không sử dụng ping) nhưng không nên đưa ra bất kỳ thông tin sai nào. Đúng? Ngoài ra, làm thế nào tôi có thể ngẫu nhiên chuyển sang một trang web khác mọi lúc, như facebook, google, yahoo, v.v. Ngoài ra (Tôi đang cố gắng tránh bất kỳ I / O nào) sau đó bỏ qua các kiểm tra tiếp theo cho đến khi trang web ngừng hoạt động hoặc gây ra các kiểm tra dài hơn (10 phút thay vì mỗi phút). Bạn nghĩ sao?