使用wget检查响应控件是否“已连接”

问题描述 投票:0回答:2

我刚刚尝试编写一个脚本,该脚本仅控制响应中是否包含“已连接”

 #!/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.
linux bash shell unix ksh
2个回答
0
投票

如果我正确地阅读了脚本,则说明您正在检索页面,但是忽略了页面的内容,而您所要做的就是查看wget是否显示字符串'connected'。

如果是这样,您的代码可以简化如下:

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
投票

如果仅想查看连接请求是否成功,并且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

检查退出代码也可以,但是取决于您的实际需求。

© www.soinside.com 2019 - 2024. All rights reserved.