我正在尝试编写一个 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 服务器的文件系统上。