Получите тип ошибки, которую он возвращает (500,503,402, и т.д.), и добавьте это в сообщении

Как я делаю этот сценарий для получения типа ошибки, которую он возвращает (500,503,402, и т.д.), и добавьте это в сообщении?

#!/bin/bash
hostlist=(s-example1.us s-example.2.us)
  for host in "${hostlist[@]}"; do
if nc -w 2 -z $host 80; then
    echo "INFO: ssh on $host responding [Looks Good]"
else
    echo "ERROR: ssh on $host not responding[Ooops something went 
  wrong]"
fi
done
0
задан 16 June 2017 в 09:09

2 ответа

$? содержит код состояния последней выполненной команды. Таким образом, еще можно изменить Ваш блок, чтобы быть:

else
    LAST_STATUS_CODE=$? # save the status code immediately, we don't want to accidentally overwrite it
    echo "ERROR: ssh on $host not responding[Ooops something went wrong]"
    echo "status code: $LAST_STATUS_CODE"
fi
1
ответ дан 3 November 2019 в 02:11

Вы, кажется, перепутываете SSH, HTTP, статус выхода и коды состояния HTTP. Если Вы хотите коды состояния HTTP, используйте что-то как завихрение:

$ curl -LI google.com -s | grep 'HTTP/'
HTTP/1.1 302 Found
HTTP/1.1 200 OK

Затем:

#!/bin/bash
hostlist=(s-colin.coverhound.us s-joe.coverhound.us)
for host in "${hostlist[@]}"; do
    status=$(curl -LI "$host" -s | grep 'HTTP/')
    if [[ $status == *"200 OK"* ]]; then
        echo "INFO: HTTP on $host responding [Looks Good]"
    else
        echo "ERROR: HTTP on $host not responding [Ooops something went wrong]"
        printf "%s\n" "$status"
    fi
done

Так, с hostlist=(google.com/teapot) я добрался бы:

ERROR: HTTP on $host not responding [Ooops something went wrong]
HTTP/1.1 301 Moved Permanently
HTTP/1.1 418 I'm a Teapot
1
ответ дан 3 November 2019 в 02:11

Другие вопросы по тегам:

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