如何从任意 URL 获取响应?

如何从任意 URL 获取响应?

我被要求写一个shell脚本检查我的项目的 URL 是否正常/工作。

我试图在互联网上找到一些提示,但我得到的只是检查 URL 是否存在。

我首先尝试使用wget.

wget -S --spider https://genesis-dev.webbank.ssmb.com:21589/gop-ui/app.jsp 2>&1 | awk '/^  /'
if [ $? -ne 0 ]
then echo "Server is UP"
else
echo "Server is down"
fi

我的下一次尝试是与curl.

curl -ivs  https://genesis-dev.webbank.ssmb.com:21589/opconsole-sit/opconsole.html#
if [ $? -ne 0 ]
then echo "Server is UP"
else
echo "Server is down"
fi

但是,两者都检查 URL 是否存在而不是响应。

答案1

curl -Is http://www.yourURL.com | head -1您可以尝试此命令来检查任何 URL。状态代码200 OK表示请求已成功且 URL 可达。

telnet您还可以使用命令测试 URL 可用性并获取响应代码

telnet www.yourURL.com 80

80 是端口号。

答案2

您可以执行以下操作

#!/bin/bash

read -p "URL to check: " url
if curl --output /dev/null --silent --head --fail "$url"; then
  printf '%s\n' "$url exist"
else
  printf '%s\n' "$url does not exist"
fi

不过,这些if语句不是必需的,我将它们放在这里只是为了说明脚本的流程。在此输入图像描述

答案3

以下事情对我有用......

status="$(curl -Is http://www.google.com | head -1)"
validate=( $status )
if [ ${validate[-2]} == "200" ]; then
  echo "OK"
else
  echo "NOT RESPONDING"
fi

我尝试了@THUSHI 写的内容。

答案4

大多数时候curl在https上不起作用,如果你想检查你可以检查一下“卷曲——版本”在这种情况下您将看不到 https 选项,您可以在下面使用

wget --post-data '{"name":"Radha", "Car": "Jaquar"}' --header "Content-Type: application/json" --no-check-certificate https://yourrequiredURI

相关内容