使用 WGET 检查响应控制是否"connected"



我刚刚试图写一个脚本,它只控制响应是否包含"已连接">

#!/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.

如果我正确阅读了您的脚本,您将检索页面,但忽略其内容,您只需要查看wget是否显示字符串"connected"。

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

if wget --spider -S $link 2>&1 | grep "connected" > /dev/null
then 
echo "OK"; 
else 
echo "FAIL";
fi

您不需要捕获wget的输出并对其运行regexp搜索;grep在搜索您提供的字符串时已经返回0(成功(或1(未找到(。

该返回代码可以直接用于控制if

grep的输出被重定向到/dev/null,以便不显示在屏幕或脚本输出上。

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

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

最新更新