Проверьте ответ wget для кода состояния и содержания - PullRequest
1 голос
/ 22 апреля 2019

Я пишу скрипт проверки работоспособности для Docker-контейнера, используя bash. Он должен проверять как статус возврата URL 200, так и его содержимое.

Есть ли способ использовать wget для проверки того, что URL возвращает 200 И что содержимое URL содержит определенное слово (в моем случае это слово "DB_OK"), предпочтительно вызывая его только один раз?

StatusString=$(wget -qO- localhost:1337/status)

#does not work
function available_check(){
  if [[ $StatusString != *"HTTP/1.1 200"* ]];
      then AvailableCheck=1
      echo "availability check failed"
  fi
}

#checks that statusString contains "DB_OK", works
function db_check(){
  if [[ $StatusString != *"DB_OK"* ]];
      then DBCheck=1
      echo "db check failed"
  fi
}

1 Ответ

1 голос
/ 22 апреля 2019
#!/bin/bash

# -q removed, 2>&1 added to get header and content
StatusString=$(wget -O- 'localhost:1337/status' 2>&1)

function available_check{
  if [[ $StatusString == *"HTTP request sent, awaiting response... 200 OK"* ]]; then
    echo "availability check okay"
  else
    echo "availability check failed"
    return 1
  fi
}

function db_check{
  if [[ $StatusString == *"DB_OK"* ]]; then
    echo "content check okay"
  else
    echo "content check failed"
    return 1
  fi
}

if available_check && db_check; then
  echo "everything okay"
else
  echo "something failed"
fi

Выход:

availability check okay
content check okay
everything okay
...