Чи є простий спосіб перевірити підключення до Інтернету з консолі? Я намагаюся грати навколо в сценарії оболонки. Мені здається, одна ідея - перевірити код відповіді HTTP, щоб інтерпретувати, чи працює інтернет-з'єднання нормально. Але я думаю, що повинен бути простий спосіб без необхідності перевірки сайту, який ніколи не виходить з ладу;)wget --spider http://www.google.co.in/
Редагувати: Схоже, може бути безліч факторів, які можна оглянути окремо, добре. На даний момент я маю намір перевірити, чи не працює мій блог. У мене є інсталяційний крон, щоб перевіряти його щохвилини. Для цього я перевіряю код відповіді HTTP wget --spider у своєму блозі. Якщо його не 200, він сповіщає мене (я вважаю, що це буде краще, ніж просто прошивати його, оскільки сайт може зазнати великого навантаження та може виправитись або відповісти дуже пізно). Зараз вчора виникла якась проблема з моїм Інтернетом. LAN була добре підключена, але я не міг отримати доступ до жодного сайту. Тому я продовжую отримувати сповіщення, оскільки сценарій не міг знайти 200 у відповіді wget. Тепер я хочу переконатися, що воно відображає повідомлення, коли я маю підключення до Інтернету.
Отже, перевірка наявності підключення до DNS та локальної мережі є для мене трохи надмірною, оскільки у мене немає такої специфічної потреби, щоб зрозуміти, у чому проблема. То що ви пропонуєте, як я це роблю?
Ось мій сценарій, щоб постійно перевіряти час простою для мого блогу:
#!/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), але не повинно давати помилкових позитивних результатів. Правильно? Крім того, як я можу щодня рандомізувати пінг на інший веб-сайт, наприклад, у facebook, google, yahoo тощо. Також (я намагався уникати будь-яких вводу-виводу), я можу написати в журнал файл, за допомогою якого я можу перевірити кількість перевірок простоїв і потім пропустіть подальші перевірки, поки сайт не працює або не спричинить довші перевірки (10 хв замість кожні хв). Як ти гадаєш?