检查 URL 的 Shell 脚本

检查 URL 的 Shell 脚本

我正在尝试编写一个 shell 脚本来检查特定域名中是否存在特定目录。例如,我有一个名为 的网站www.example.com。我想检查该页面是否www.example.com/testpage存在。我有一个文本文件,其中包含目录名称列表,每行一个,必须用名称 替换testpage。我希望脚本选择每个目录名称,将其附加到 urlwww.example.com并进行验证。我该如何开始编写脚本?

答案1

让我们来看一个例子。

文件relative_urls.list

> cat relative_urls.list 
/users/449/oli
/users/449
/help/badges
/help/badges/185/curious
/unanswered
/questions/tagged/12.04
/questions/tagged/boot
/questions/tagged/oracle
/questions/tagged/internet_explorer
/questions/tagged/outlook

我们想检查这些文件是否在网站上可用http://askubuntu.com

可能的解决方案:

> cat relative_urls.list |while read i ; do curl --head -s "http://askubuntu.com"$i |grep -q '^HTTP.*200' && echo "OK '$i'" ||echo "fail '$i'" ; done

结果是:

OK '/users/449/oli'
fail '/users/449'
OK '/help/badges'
OK '/help/badges/185/curious'
OK '/unanswered'
OK '/questions/tagged/12.04'
OK '/questions/tagged/boot'
OK '/questions/tagged/oracle'
fail '/questions/tagged/internet_explorer'
fail '/questions/tagged/outlook'

如果您更喜欢 url 可用性的另一种定义,您可以将grep命令更改为更适合您的条件的内容。

重要的是curl显示一个 URL 是否服务由网络服务器执行。没有可靠的方法来确定目录存在通过 http 在 Web 服务器的文件系统上。

相关内容