wget 和 curl
> 查看网站URL是否正常最常见的方式莫过于使用 wget 和 curl 工具来获得网站的 URL 的信息,这个两个工具非常的强大;
## 1.1 wget 命令
`这个命令的参数非常的多,至少也有数 10 个参数 `
- wget:下载网页或者文件的工具命令
* --spider 模拟爬虫的行为去访问网站, 但是不会下载网页
* -q, --quit 安静的访问, 禁止输出,类似 -o /dev/null 的功能
* -o, --output-file=FILE; 记录输出到文件
* -T, --timeout=SECONDS 访问网站的超时的时间
* -t --tries=number 当网站异常时重试的次数
`实时监控的方式:(利用放回值确定网站是否正常) `
wget --spider -T 5 -q -t 2 www.baidu.com (这个命令会wget 会后台爬取网站)
echo $? => 输出 0 标示上个命令执行正常
## curl: 访问网站 url
* -I / --head 显示响应头的信息
* -m / --max-time `seconds` 访问超时的时间
* -o / --output `file` 记录访问信息到文件
* -s / --silent 沉默访问模式, 就是不输出信息
* -w / --write-out `format` 以固定的格式输出, 例如: %{http_code}, 输出状态码
`实时监控的方式如下`
1: 利用命令放回值,确定网站是否正常
curl -s -o /dev/null www.baidu.com
echo $? => 确定输出 为 0
2: 获取状态码 (200 标示正常) curl -I -m 5 -s -w ''%{http_code} \n ' -o /dev/null www.baidu.com
- 使用shell 脚本监控指定的 url 是否正常
```sh
#!/bin/sh
# help 信息
function usage() {
echo $"usage: $0 url";
exit 1;
}
function check_url (){
# $1 是传入的参数 url
wget --spider -q -o /dev/null --tries=1 -T 5 $1
# curl -s -o /dev/null $1
if [ $? -eq 0 ] then
echo "$1 success";
exit 1;
else
echo "$1 fail";
exit 0;
fi
}
function main() {
# 如果传入的多个参数,则打印帮助函数,提示用户。
if [ $# -ne 1 ] then
usage
fi
# 接收函数的传参,即把结尾的 $* 传到这里。
check_url $1
}
# 这里的 $* 就是把命令行接收的所有参数作为函数参数传给函数内部,常用手法。
main $*
```
- 脚本二 使用 curl 获得响应状态码来判断网站是否正常
```sh
#!/bin/zsh
# 打印 help 信息
function usage() {
echo $"usage: $0 url";
exit 1;
}
function check_url (){
local num = `curl -I -m 5 -s -w "%{http_code}\n" -o /dev/null $1 | egrep "30[12]|200" | wc -l`;
if [ $num -ge 1 ] then
echo "$1 is success";
else
echo "$1 is fail";
fi
}
function main() {
# 如果传入的多个参数,则打印帮助函数,提示用户。
if [ $# -ne 1 ] then
usage
fi
# 接收函数的传参,即把结尾的 $* 传到这里。
check_url $1
}
# 这里的 $* 就是把命令行接收的所有参数作为函数参数传给函数内部,常用手法。
main $*
```