проверка контроля отклика просто "подключен" или нет с помощью wget - PullRequest
0 голосов
/ 26 октября 2019

Я просто пытаюсь написать скрипт, который просто контролирует ответ, содержит "подключен" или нет

 #!/bin/bash
cat control.txt | while read link // control.txt contains http and https urls
do
if [[ $(wget --spider -S $link 2>&1 | grep "connected") =~~ *"connected"* ]];
then echo "OK"; 
else echo "FAIL";
fi
done

Вывод:

sh -x portcontrol.sh 
portcontrol.sh[2]: Syntax error at line 4 : `=~' is not expected.

Ответы [ 2 ]

0 голосов
/ 26 октября 2019

Если я правильно прочитал ваш скрипт, вы извлекаете страницу, но игнорируете ее содержимое, и все, что вам нужно, это посмотреть, показывает ли wget строку «подключено».

Если это так, ваш код можно упростить следующим образом:

if wget --spider -S $link 2>&1 | grep "connected" > /dev/null
then 
    echo "OK"; 
else 
    echo "FAIL";
fi

Вам не нужно захватывать вывод wget и выполнять поиск по регулярному выражению;grep уже возвращает 0 (успех) или 1 (не найдено) при поиске заданной вами строки.

Этот код возврата может использоваться непосредственно для управления if.

Выходомgrep перенаправляется на /dev/null, чтобы не отображаться на экране или в выводе скрипта.

0 голосов
/ 26 октября 2019

Если вы просто хотите увидеть, успешно ли выполнен запрос на подключение, и вывод wget имеет форму:

Connecting to <hostname>|<ip_addr>|:<port>... connected.

, этого достаточно просто сделать:

if [[ $(wget --spider -S $link 2>&1 | grep -c " connected\.") -gt 0 ]];
  then echo "OK"; 
  else echo "FAIL";
fi

Проверка кода выхода тоже работает, но это зависит от ваших требований.

...