如何从任何URL获得响应?


23

我被要求编写一个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的人,似乎建议您使用--fail标志,它将返回退出代码22,而不是返回有关该问题的页面,因此只有'200 OK'会给出返回值的0。–
Guy

Answers:


20

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

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

telnet www.yourURL.com 80

80是端口号。


感谢分享。也尝试过这个,但是我认为这也只是检查存在性。$ sh q.sh要检查的URL:google.com/akash google.com/akash存在,但这在浏览器:: 404中给出了错误。那是一个错误。
Akash

@Akash:您可以通过浏览器访问该链接吗?
2014年

如果这是我们正在谈论的链接--www.google.com/akash--然后否-这是给我一个错误::“ 404-not found”
Akash

是的,如果该URL不存在,那么它应该:)您还期望什么???
2014年

但是-它使我生存-它存在。下面是代码:: $ vi q.sh#!/ bin / ksh echo“给您的URL”阅读url curl -ls“&url” | 头-1如果[$?-eq 0]然后回声“存在”其他回声,当我运行这个:: $ SH q.sh给你的网址www.google.com/akash存在“不存在”的网络,但它应该去ELSE ..
阿卡什

5

您可以执行以下操作

#!/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不过,这些语句不是必需的,我将它们放在此处只是为了说明脚本的流程。在此处输入图片说明


我试过了,它没有给我预期的结果。
阿卡什(Akash)2014年

$ SH q.sh网址查询:www.google.com%S \ n www.google.com不存在
阿卡什

@Akash请参阅更新的答案。不要在脚本中添加扩展名。也可以通过运行它./checkURL。希望对您
有所

需要它用于项目目的..-不能像那样运行它.. ::
Akash 2014年

什么是%s\n 有你把?对你的评论?目的?您应该更加具体地说明您要完成的工作。
Valentin Bajrami 2014年

1

接下来的事情对我有用...

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

我尝试了@THUSHI编写的内容。


0

如果您输入的ping是网址,那么也会给您答复

ping -c 5 www.google.com

-c直到5的超时时间结束之前,这里将一直计数。

根据我的建议,nmap如果您的系统上安装了软件包,则可能会起作用。curl会是一个更好的选择,但是尽管如此,这里还是一个使用示例nmap

nmap -p 80 -sT www.google.com


ping发送一条ICMP消息,并且绝对不使用port 80443。另外,某些服务器会阻止ping请求,这仍然会使尝试不可靠。
Valentin Bajrami

您也可以ping端口。我将提供一个使用nmap ping网站上的端口的示例
ryekayo 2014年

nmap -p 80 -sT www.google.com将ping端口80。当我访问PC时,我将很快编辑答案
ryekayo 2014年

1
nmap再次是许多* nix系统中的非默认软件包。curl基本系统随附的是更常见的。您仍然需要安装nmap以实现可以通过标准* nix工具实现的功能。
Valentin Bajrami 2014年

1
理解了,谢谢你的信息。我更新了我的答案
ryekayo 2014年

0

在大多数情况下,curl在https上不起作用,如果您想检查可以通过“ curl --version”进行检查,则在这种情况下您将不会看到https选项

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


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.