Требуется улучшение сценария, который непрерывно тестирует веб-сайт.

Я нашел какое-то расширение, которое выполняет половину работы моего скрипта, разветвил его, исправил и добавил описанную выше функцию, поэтому думаю, что вопрос можно закрыть.

https://github.com/CZ-NIC/run-or-raise/pull/10

короче, я использовал

global.display.get_tab_list(0, null)[1];

, чтобы получить lastWindow, поэтому я сфокусировал его, используя API-интерфейс расширения.

1
09.10.2019, 22:56
3 ответа

Вам не нужно ;в конце каждой строки, это не C.

Вам не нужно:

cp /dev/null pingop.txt

, потому что следующая строка скрипта

ping -i 1 -c 1 -W 1 google.com > pingop.txt

в любом случае перезапишет содержимое pingop.txt. И если мы здесь, ты даже не нужно сохранять вывод pingв файл, если вы не собираетесь отправить или обработать позже, просто сделайте:

if ping -i 1 -c 1 -W 1 website.com >/dev/null 2>&1
then
    sleep 1
else
    mutt -s "Website Down!" bruno.bvaraujo@gmail.com < wsdown.txt
    sleep 10

Возможно, ответ на ваш вопрос о ложных тревогах-pingне лучший способ проверить, работает ли сайт. Некоторые веб-сайты просто не отвечать на запросы ICMP, например:

$ ping -i 1 -c 1 -W 1 httpbin.org
PING httpbin.org (3.222.220.121) 56(84) bytes of data.

--- httpbin.org ping statistics ---
1 packets transmitted, 0 received, 100% packet loss, time 0ms

Тем не менее, http://httpbin.orgработает. Если вы используете website.comв ваш пример, скорее всего, вы обращаетесь к нему с помощью HTTP/HTTPS, и в этом случай рассмотрите возможность использованияcurl -Is:

$ curl -Is "httpbin.org" >/dev/null  2>&1
$ echo $?
0
$ curl -Is "non-existing-domain-lalalala.com" >/dev/null  2>&1
$ echo $?
6

ОП спросил о разнице в скорости между pingи curlв Комментарии.Нет большой разницы, если вы тестируете веб-сайт, отвечает наping:

$ time curl -Is google.com >/dev/null  2>&1
real    0m0.068s
user    0m0.002s
sys     0m0.001s
$ time ping -i 1 -c 1 -W 1 google.com
PING google.com (216.58.215.110) 56(84) bytes of data.
64 bytes from waw02s17-in-f14.1e100.net (216.58.215.110): icmp_seq=1 ttl=54 time=8.06 ms

--- google.com ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 8.068/8.068/8.068/0.000 ms
real    0m0.061s
user    0m0.000s
sys     0m0.000s

Но при тестировании веб-сайта, который не отвечает на ping, тогда curlне только надежнее, но и быстрее, чем ping с -W, который вы использовать сейчас:

$ time ping -i 1 -c 1 -W 1 httpbin.org
PING httpbin.org (3.222.220.121) 56(84) bytes of data.

--- httpbin.org ping statistics ---
1 packets transmitted, 0 received, 100% packet loss, time 0ms


real    0m1.020s
user    0m0.000s
sys     0m0.000s
$ time curl -Is httpbin.org  >/dev/null  2>&1

real    0m0.256s
user    0m0.003s
sys     0m0.000s
13
27.01.2020, 23:10

в версии ping не так много улучшений

#!/bin/bash
while true; do
    date > wsdown.txt  
    ping -i 1 -c 1 -W 1 website.com > pingop.txt # '>' will overwrite file
    sleep 1 ;
    if ! grep -q "64 bytes" pingop.txt ; then ## negate test
        mutt -s "Website Down!" bruno.bvaraujo@gmail.com < wsdown.txt 
        sleep 10 
    fi
done

обратите внимание, что

  • вам не нужно ;"закрывать" команду
  • Если website.comвыйдет из строя, вы, скорее всего, получите много спама
  • ping (icmp )и http :// это два разных протокола.
3
27.01.2020, 23:10

Вы можете увеличить синхронизацию команды ping, это увеличит время отклика, но, возможно, также уменьшит потери, как показано ниже:

Изping -i 1 -c 1 -W 1 website.com > pingop.txt ;

Кping -i 2 -c 1 -W 4 website.com > pingop.txt ;

0
27.01.2020, 23:10

Теги

Похожие вопросы